访问系统相册首先是需要权限!所以
首先 配置info.plist文件
在info.plist中添加一行Privacy - Photo Library Usage Description
并且类型选为String类型并且在后面填上一个字符串!
要访问系统的相册需要实现两个系统协议的方法!所以需要实现两个协议!
- UINavigationControllerDelegate
UIImagePickerControllerDelegate
接下来我们可以编程了!
编程:
弹出系统相册:
//首先判断系统的相册能不能用
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])
{
//如果可以用,那么需要创建一个UIImagePickerController视图控制器然后在最后跳转到这个控制器,当然了这个是系统的
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
// 设置源类型 如果是图片库就是访问系统相册 如果是相机就是拍照
// 设置代理
imagePickerController.delegate = self;
// 设置允许编辑
imagePickerController.allowsEditing = YES;
// 弹出
[self presentViewController:imagePickerController animated:YES completion:^{
//在这里写你想处理的代码
NSLog(@"图片选择器已弹出");
}];
}
else
{
NSLog(@"图片库不可用");
}
当然了还有两个协议方法!
//第一个方法是当你在系统弹出的控制器中选择完图片以后,点击系统提供的`选择`按钮的操作,其中info参数是一个字典,字典中UIImagePickerControllerEditedImage字段是你在那个视图控制器中选择的图片(类型是UIImage)
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info;
//这个函数是当你选择取消按钮的时候需要处理的事情
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;
示例:
// 已经结束选择 delegate需要让图片选择器dismiss
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
{
// 将选择的图片赋值给imageview
_imageView.image = info[UIImagePickerControllerEditedImage];
//取消模态
[picker dismissViewControllerAnimated:YES completion:nil];
}
// 点击取消按钮 delegate需要让图片选择器dismiss
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
//取消模态
[picker dismissViewControllerAnimated:YES completion:nil];
}