В этой статье я кратко, но с пояснениями опишу несколько
небольших, но очень полезных методов решения некоторых проблем при
разработке под IPhone/IPad. Для многих опытных программистов эти методы
возможно и не секрет, но для новичков жадно рыщущих по просторам
интернет в поисках хоть какой либо русскоязычной информации будет
полезно. Например как показать окно выбора фото из галереии телефона или
IPad-а, или же сделать тень какому либо элементу.
Итак начнем с небольшого метода который позволит создать папку в директории Documents вашего устройства с использованием NSFileManager.
Далее рассмотрим метод который позволит открыть фото галерею вашего устройства и выбрать из него фото:
Далее рассмотрим обработчик результата после выбора фото или видео файла:
Теперь поговорим о том как создать тень например нижнему меню вашего приложения. Реализуется это при помщи QuartzCore фреймворка. Подключить его в проект можно в разделе настроек вашего приложения Biuld Phases.
В h файле ваешго viewcontroller – а прописываем инклуд #import
Теперь сам код который вы можете вставить например во viewdidload
И в заключении данной статьи хотелось бы показать ещё один метод позволяющий установить фоновую картинку на view вашего приложения
Итак начнем с небольшого метода который позволит создать папку в директории Documents вашего устройства с использованием NSFileManager.
-(void) CreatefolderpathinEdirectory:(NSString *)folder{В качестве входного параметра я передаю имя директории. Метод проверяет существует ли папка, если нет то создаст её.
NSArray *dirPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docsDir = [dirPath objectAtIndex:0];
NSString *path = [docsDir stringByAppendingPathComponent:folder];
if (![[NSFileManager defaultManager] fileExistsAtPath:path])
[[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:NO attributes:nil error:nil];
}
Далее рассмотрим метод который позволит открыть фото галерею вашего устройства и выбрать из него фото:
-(void) openGallery{Если вы заметили функционал для IPad несколько отличается, так как по сути модальное окно вызвать нельзя мы вызовем всплывающее окошко с заданными координатами от которых оно будет строится и стрелкой указывающей например на кнопку которая вызвала действия.
//создаём объект пикер контроллера
UIImagePickerController *picker = [[UIImagePickerController alloc]init];
//задаём опции
picker.videoQuality = UIImagePickerControllerQualityTypeHigh;
picker.delegate = self;
picker.allowsEditing = NO;
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
picker.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:picker.sourceType];
//проверим на каком устройстве выполняем операцию
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { //Если запустили на устройстве ipad
//создаём всплывающее онкно для выбора файла
self.popoverController = [[UIPopoverController alloc] initWithContentViewController:picker];
//опции всплывающего окна
[self.popoverController presentPopoverFromRect:CGRectMake(220.0, 680.0, 330.0, 400.0)
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];
} else {//запустили на iphone
//покажем модальное оконо пикера
[self presentModalViewController:picker animated:YES];
}
}
Далее рассмотрим обработчик результата после выбора фото или видео файла:
- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)infoУглублятся в подробности обработчика не буду так как код прокомментирован достаточно.
{
//определить медиа тип файла
NSString* mediaType = [info objectForKey:UIImagePickerControllerMediaType];
if ( [ mediaType isEqualToString:@"public.image" ]) { //если файл – изображение
// Берем изображение из информации словаря
UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
//получить путь к файлу
NSURL* imagePath = (NSURL *)[info valueForKey:UIImagePickerControllerReferenceURL];
NSString* chosed_imagePath = [imagePath path];
//формируем file-data изображения
NSData* imageData = UIImageJPEGRepresentation(image, 1.0);
//Это собственно стандартный набор данных о фото которые можем вытянуть
}else if ( [ mediaType isEqualToString:@"public.movie" ]){ //если файл видео
NSString *moviePath = [[info objectForKey:UIImagePickerControllerMediaURL] path]; // путь к ролику на устройстве
}
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {//ipad
//закрыть всплывающее окно
[self.popoverController dismissPopoverAnimated:YES];
}else{ // iphone
//закрыть модальное окно пикера
[self dismissModalViewControllerAnimated:YES];
}
}
Теперь поговорим о том как создать тень например нижнему меню вашего приложения. Реализуется это при помщи QuartzCore фреймворка. Подключить его в проект можно в разделе настроек вашего приложения Biuld Phases.
В h файле ваешго viewcontroller – а прописываем инклуд #import
Теперь сам код который вы можете вставить например во viewdidload
menu.layer.shadowColor = [UIColor blackColor].CGColor;menu в данном случае это UIBoutlet UITabbar, хотя по сути вы можете приминить тень к любому элементу на вашей view. Конечно же вы можете поиграть с цыфрами и посмотреть как меняется результат, а также изменить цвет тени, так как в моём варианте цвет чёрный.
menu.layer.shadowOffset = CGSizeMake(0, 1);
menu.layer.shadowOpacity = 1;
menu.layer.shadowRadius = 3.0;
И в заключении данной статьи хотелось бы показать ещё один метод позволяющий установить фоновую картинку на view вашего приложения
-(void) preperebg{bg.png – это картинка фона, желательно конечно же делать её под размер экрана мобильного устройства. в строке [[UIImage imageNamed:@"bg.png"] drawInRect:self.view.bounds]; – картинка отрисуется в размерах self.view. приложения, так что даже если она маленькая она всёравно заполнит собой все пространство.
UIGraphicsBeginImageContext(self.view.frame.size);
[[UIImage imageNamed:@"bg.png"] drawInRect:self.view.bounds];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.view.backgroundColor = [UIColor colorWithPatternImage:image];
}
Комментариев нет:
Отправить комментарий