一.属性
1.图片来源
(1)sourceType
属性
// default value is UIImagePickerControllerSourceTypePhotoLibrary.
@property(nonatomic) UIImagePickerControllerSourceType sourceType;
(2)UIImagePickerControllerSourceType
typedef NS_ENUM(NSInteger, UIImagePickerControllerSourceType) {
UIImagePickerControllerSourceTypePhotoLibrary,
UIImagePickerControllerSourceTypeCamera,
UIImagePickerControllerSourceTypeSavedPhotosAlbum
} __TVOS_PROHIBITED;
2.允许预览图片
allowsEditing
属性
// replacement for -allowsImageEditing; default value is NO.
@property(nonatomic) BOOL allowsEditing;
3.代理
(1)delegate
属性
@property(nullable,nonatomic,weak) id <UINavigationControllerDelegate,UIImagePickerControllerDelegate> delegate;
(2)UIImagePickerControllerDelegate
协议方法
@protocol UIImagePickerControllerDelegate<NSObject>
@optional
// The picker does not dismiss itself; the client dismisses it in these callbacks.
// The delegate will receive one or the other, but not both, depending whether the user
// confirms or cancels.
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info;
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;
@end
二.info
dictionary keys
- // an NSString (UTI, i.e. kUTTypeImage)
NSString *const UIImagePickerControllerMediaType;
- // a UIImage
NSString *const UIImagePickerControllerOriginalImage;
- // a UIImage
NSString *const UIImagePickerControllerEditedImage;
- // an NSValue (CGRect)
NSString *const UIImagePickerControllerCropRect;
- // an NSURL
NSString *const UIImagePickerControllerMediaURL;
- // an NSURL that references an asset in the AssetsLibrary framework
NSString *const UIImagePickerControllerReferenceURL;
- // an NSDictionary containing metadata from a captured photo
NSString *const UIImagePickerControllerMediaMetadata;
- // a PHLivePhoto
NSString *const UIImagePickerControllerLivePhoto;
三.程序举例
初始化
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
picker.delegate = self;
[self presentViewController:picker animated:true completion:nil];
实现代理方法
取消
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[picker dismissViewControllerAnimated:true completion:nil];
}
选中图片
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
{
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
[picker dismissViewControllerAnimated:true completion:nil];
}