UIImagePickerController
kırpma/düzenleme özelliğinin davranışını desteklenen bir şekilde ayarlamak mümkün değildir. Potansiyel olarak UIImagePickerController
denetleyici/görünüm hiyerarşisine girebilir ve nasıl çalıştığını anlamaya çalışabilirsiniz, ancak bu çok bakım gerektirmeyen veya hoş bir şey değildir.
UIImagePickerController
UINavigationController
bir alt sınıfıdır, bu yüzden kendi resim düzenleme görünümü denetleyicisi uygulanması ve
UIImagePickerController
üzerine iterek alıkoyan şey yok, Having. Bu muhtemelen çok zor olmazdı,
UIImage
ürününü
UIScrollView
ürününe ekleyerek kırpma alanını gösteren, bir miktar matematik yapıp,
UIImage
ürününü kırpın. Açıkçası bu durumda işlevsellik üzerinde tam bir kontrole sahip olursunuz ve bahse girerim ki,
UIImagePickerController
'un bağırsaklarına dalmaktan daha az zaman alır.
@interface MainViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate, ImageEditorViewControllerDelegate>
@end
@implementation MainViewController {
UIImagePickerController* _imagePickerController;
}
#pragma mark IBAction
- (IBAction)pickImage:(id)sender {
_imagePickerController = [[UIImagePickerController alloc] init];
_imagePickerController.delegate = self;
_imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
_imagePickerController.allowsEditing = NO;
[self presentViewController:_imagePickerController animated:YES completion:nil];
}
#pragma mark UIImagePickerControllerDelegate
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
ImageEditorViewController* imageEditorViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"ImageEditor"];
imageEditorViewController.delegate = self;
imageEditorViewController.imageToEdit = info[UIImagePickerControllerOriginalImage];
[_imagePickerController pushViewController:imageEditorViewController animated:YES];
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
[self dismissViewControllerAnimated:YES completion:^{
_imagePickerController = nil;
}];
}
#pragma mark ImageEditorViewControllerDelegate
- (void)imageEditorViewController:(ImageEditorViewController *)imageEditorViewController didFinishWithInfo:(NSDictionary *)info {
// TODO: Handle the edited media
[self dismissViewControllerAnimated:YES completion:^{
_imagePickerController = nil;
}];
}
@end
Ve sonra düzenleme görünümü (ihtiyaçlarınıza özgü bir uygulama ile) böyle bir arabirim olurdu:
ben muhtemelen böyle seçici sunulan her türlü görüş kontrolörü kurmak istiyorum
@protocol ImageEditorViewControllerDelegate;
@interface ImageEditorViewController : UIViewController
@property(nonatomic, strong) UIImage* imageToEdit;
@property(nonatomic, weak) id <ImageEditorViewControllerDelegate> delegate;
@end
@protocol ImageEditorViewControllerDelegate
- (void)imageEditorViewController:(ImageEditorViewController*)imageEditorViewController didFinishWithInfo:(NSDictionary*)info;
@end