자르기/편집 기능의 동작을 지원되는 방식으로 조정할 수 없습니다. UIImagePickerController
컨트롤러/뷰 계층 구조를 파헤쳐서 어떻게 작동하는지 파악하려고 시도 할 수는 있지만 유지 관리가 쉽지 않거나 즐거운 일은 아닙니다.
UIImagePickerController
은 UINavigationController
의 하위 클래스이므로 사용자가 자신의 이미지 편집보기 컨트롤러를 구현하고 UIImagePickerController
에 밀어 넣는 것을 막을 수는 없습니다. 이것은 아마도 너무 어렵지 않을 것입니다. 수확 된 영역을 보여주는 직사각형 오버레이로 UIImage
을 UIScrollView
에 던집니다. 몇 가지 수학을 수행하고 UIImage
을 자르십시오. 이 경우 기능을 완벽하게 제어 할 수 있으며 UIImagePickerController
이라는 용기에 맞추기보다는 구현하는 데 더 적은 시간이 걸릴 것입니다.
@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