Суть данного способа заключается в передаче изображения из вашего приложения прямо в Instagram-экран с фильтрами (ответ на вопрос «почему так?» можно найти здесь). Так как в данном примере будет использоваться изображение, полученное с камеры iOS устройства — логично разделить его на 2 этапа:
1. Запуск камеры и получение снимка (для этого воспользуемся классом UIImagePickerController:).
UIImagePickerController *picker = [[UIImagePickerController alloc] init]; picker.delegate = self; // Включаем редактирование изображений (масштабирование и перемещение) picker.allowsEditing = YES; // Устанавливаем в качестве источника получения данных камеру picker.sourceType = UIImagePickerControllerSourceTypeCamera; [self presentModalViewController: picker animated: YES]; [picker release];
2. Открытие полученного изображения в приложении Instagram (для этого воспользуемся классом UIDocumentInteractionController)
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage : (UIImage *)image editingInfo:(NSDictionary *)editingInfo { NSString *documentsDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; // Сохраняем изображение с разрешением *.igo NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"image.igo"]; NSData *imageData = UIImagePNGRepresentation(image); [imageData writeToFile:savedImagePath atomically:YES];// Проверяем, доступно ли приложение Instagram на данном устройстве NSURL *instagramURL = [NSURL URLWithString:@"instagram://app"]; if ([[UIApplication sharedApplication] canOpenURL:instagramURL]) { NSURL *imageUrl = [NSURL fileURLWithPath:savedImagePath];
UIDocumentInteractionController * docController = [[UIDocumentInteractionController alloc] init]; docController.delegate = self; [docController retain]; // Указываем тип программ для открытия docController.UTI = @"com.instagram.exclusivegram"; [docController setURL:imageUrl]; // Показываем меню выбора доступных приложений для отображения изображения [docController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES]; } else { // Если приложение Instagram не найдено - показываем соответствующее сообщение UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Warning" message:@"You have no installation Instagram App" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; [alert release]; } }
В нашем случае для открытия изображения будет использоваться только Instagram. Для использования всех подходящих приложений устройства нужно заменить строки
NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"image.igo"]; docController.UTI = @"com.instagram.exclusivegram";
на
NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"image.ig"]; docController.UTI = @"com.instagram.photo";
В случае загрузки изображения из другого источника нужно предварительно сохранить его в формате PNG или JPEG (преимущественно JPEG). Для получения лучшего результата рекомендуется использовать JPEG с разрешением как минимум 612 x 612 пикселей, иначе оно не будет загружено (пользователю будет показано сообщение о невозможности загрузки).
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: