После прочтения документации и пример кода из apple относительно UIImagePickerController и после чтения многих руководств и даже Questions здесь, в Stackoverflow (или здесь), я пришел к выводу, что встроенный UIImagePicker способен представить "урожай" окно "пользователю и разрешить пользователю обрезать и перемещать правую часть изображения, которое он хочет использовать.
Но, проверяя эти примеры на iOS 7.1, окно обрезки отсутствует. Нет ничего, что позволило бы пользователю вырезать часть взятого изображения. Все тесты проводились на реальном оборудовании (iPhone 5S), здесь не использовался симулятор iPhone из-за отсутствия камеры;)
Кроме того, в методе делегата "didFinishPickingMediaWithInfo" в "info" -NSDictionary отсутствует запись "UIImagePickerControllerEditedImage".
Что я сделал:
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
#if TARGET_IPHONE_SIMULATOR
// iPhone-Simulator has no camera, just save images to the photoalbum on the simulator to use them here
imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
#else
imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
#endif
imagePickerController.editing = YES;
imagePickerController.delegate = (id)self;
imagePickerController.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
[self presentModalViewController:imagePickerController animated:YES];
и метод делегата:
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
// .... do something
}
В этот момент в Словаре доступно только 3 ключа с именем "info":
- UIImagePickerControllerOriginalImage
- UIImagePickerControllerMediaMetadatali >
- UIImagePickerControllerMediaType
ничего другого. Кроме того, не было ни одного окна обрезки или каких-либо аналогичных элементов управления.
Неужели я ошибаюсь в своих ожиданиях относительно поведения ImagePicker? На этом SF-вопросе пользователь написал "Окно обрезания" . Удалась ли функция? Является ли устаревшая документация или я совершенно не прав?
Я также пробовал этот код, взятый из другого ответа на аналогичный вопрос:
- (void) imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[picker dismissViewControllerAnimated:YES completion:^{
// Edited image works great (if you allowed editing)
UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
// AND the original image works great
UIImage *originalImage = [info objectForKey:UIImagePickerControllerOriginalImage];
// AND do whatever you want with it, (NSDictionary *)info is fine now
UIImage *myImage = [info objectForKey:UIImagePickerControllerEditedImage];
}];
}
Не отображается окно обрезки, в "Info-NSDictionary" отсутствует ключ "UIImagePickerControllerEditedImage".
Может ли кто-нибудь объяснить мне правильное поведение? Большое вам спасибо заранее.