第一步:設置info,開啟權限
@interface ViewController ()<UINavigationControllerDelegate,UIImagePickerControllerDelegate>
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@end
@implementation ViewController
- (void)viewDidLoad {?
?? [super viewDidLoad]; ? ?
}
- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event{? ??
//1.創(chuàng)建相冊選取器??
? UIImagePickerController *picker = [[UIImagePickerController alloc] init];??
? //2.設置代理 ?UIImagePickerController有兩個協議:UINavigationControllerDelegate? UIImagePickerControllerDelegate ? ?(注意:實現完代理方法一定要釋放picker)
picker.delegate = self; ??
?//3.設置來源 ? ?(注意:相機屬性一定要用真機,模擬器不支持)
/**? ? UIImagePickerControllerSourceTypePhotoLibrary,相冊? (手機相簿)? ? UIImagePickerControllerSourceTypeCamera,相機(模擬器不支持)? ? UIImagePickerControllerSourceTypeSavedPhotosAlbum,相冊(手機照片)? ? */? ? picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;? ?
?//4.允許編輯? ?
?picker.allowsEditing = YES;?
?? //5.彈出相冊選取器??
? [self presentViewController:picker animated:YES completion:nil];
}
#pragma mark -UIImagePickerControllerDelegate/**完成選取的兩個方法為遞進關系 *///2.完成選取? 該方法與下面方法1唯一的區(qū)別就是將編輯之后的圖片image作為參數暴露在外部,而方法二則需要從字典中獲取圖片
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(nullable NSDictionary*)editingInfo{
? ? [picker dismissViewControllerAnimated:YES completion:nil];? ? NSLog(@"%@",editingInfo);? ? NSLog(@"%@",image);}
//1.完成選取- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary*)info{
[picker dismissViewControllerAnimated:YES completion:nil];
//? ? info中包括選取的照?片,視頻的主要信息
//? ? NSString *const UIImagePickerControllerMediaType; 選取的類型 public.image public.movie
//? ? NSString *const UIImagePickerControllerOriginalImage; 修改前 的UIImage object.
//? ? NSString *const UIImagePickerControllerEditedImage; 修改后 的UIImage object.
//? ? NSString *const UIImagePickerControllerCropRect; 原始圖 ?片的尺?寸NSValue object containing a CGRect data type
//? ? NSString *const UIImagePickerControllerMediaURL; 視頻在?文件系統中 的 NSURL地址
//? ? 保存視 頻主要時通過獲取其NSURL 然后轉換成NSData
UIImage *image = info[UIImagePickerControllerEditedImage];
self.imageView.image = image;
NSLog(@"%@",info);
}
//取消選取
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
[picker dismissViewControllerAnimated:YES completion:nil];
}
@end