समर्थित तरीके से UIImagePickerController
फसल/संपादन सुविधा के व्यवहार को समायोजित करना संभव नहीं है। आप UIImagePickerController
नियंत्रक/पदानुक्रम को संभावित रूप से खोद सकते हैं और यह पता लगाने की कोशिश कर सकते हैं कि यह कैसे काम करता है, लेकिन यह एक बहुत ही रखरखाव या सुखद काम नहीं है।
कहा करने के बाद कि, UIImagePickerController
UINavigationController
का एक उपवर्ग है, इसलिए वहाँ अपनी स्वयं की छवि संपादन दृश्य नियंत्रक को लागू करने और UIImagePickerController
पर इसे आगे बढ़ाने से क्या रोक रहा कुछ भी नहीं है। यह शायद बहुत कठिन नहीं होगा, आप केवल UIImage
को UIScrollView
में फसल क्षेत्र दिखाते हुए आयताकार ओवरले के साथ फेंक सकते हैं, कुछ गणित कर सकते हैं और UIImage
स्वयं फसल कर सकते हैं। इस मामले में कार्यक्षमता पर आपको स्पष्ट रूप से पूर्ण नियंत्रण होगा और मुझे लगता है कि UIImagePickerController
की गड़बड़ी में spelunking से लागू करने में कम समय लगेगा।
मैं शायद इसे सेट अप जो भी दृश्य नियंत्रक इस तरह पिकर प्रस्तुत:
@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
और फिर अपने संपादन दृश्य (एक कार्यान्वयन विशिष्ट अपनी आवश्यकताओं के साथ) इस तरह एक अंतरफलक होगा:
@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
स्रोत
2013-08-10 17:59:16