iOS开发系统相册的选取

来源:互联网 发布:余世存 知乎 编辑:程序博客网 时间:2024/06/05 17:30

要实现选取系统相册要用到UIImageViewPickerController这个类,废话不多说,直接上代码,细节已注释。
用到这个类的遵守以下2个协议

@interface ViewController ()<UIImagePickerControllerDelegate,UINavigationControllerDelegate>@property (nonatomic,strong)UIImageView *imageView;@end

UI界面的布局,设置了一个imageView和一个按钮,在按钮添加点击事件

- (void)viewDidLoad {    [super viewDidLoad];    UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 200, 200)];    [imageView setImage:[UIImage imageNamed:@"pig"]];    _imageView = imageView;    [self.view addSubview:_imageView];    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];    button.frame = CGRectMake(0, 600, 100, 30);    button.center = self.view.center;    button.backgroundColor = [UIColor redColor];    [self.view addSubview:button];    [button addTarget:self action:@selector(setImageView) forControlEvents:UIControlEventTouchUpInside];}

点击事件实现,在这里实现调用系统相册功能

- (void)setImageView{    UIImagePickerController *pickerController = [[UIImagePickerController alloc]init];    //设置选取的照片是否可编辑    pickerController.allowsEditing = YES;    //设置相册呈现的样式    pickerController.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;  //图片分组列表样式    //照片的选取样式还有以下两种//    UIImagePickerControllerSourceTypePhotoLibrary   直接全部呈现系统相册//    UIImagePickerControllerSourceTypeCamera         调取摄像头    //选择完成图片或者点击取消按钮都是通过代理来操作我们所需要的逻辑过程    pickerController.delegate = self;    //使用模态呈现相册    [self presentViewController:pickerController animated:YES completion:^{    }];}

UIImageViewPickerController的2个代理方法

#pragma mark - imagePickerController的代理方法//选择照片完成之后的代理方法- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{    //info是所选择照片的信息    //NSLog(@"%@", info);    //刚才已经看了info中的键值对,可以从info中取出一个UIImage对象,将取出的对象赋给按钮的image    /*    UIImagePickerControllerCropRect = "NSRect: {{0, 0}, {3000, 2000}}";    UIImagePickerControllerEditedImage = "<UIImage: 0x7fe5ca57f9f0> size {1239, 825} orientation 0 scale 1.000000";    UIImagePickerControllerMediaType = "public.image";    UIImagePickerControllerOriginalImage = "<UIImage: 0x7fe5ca52a690> size {3000, 2002} orientation 0 scale 1.000000";    UIImagePickerControllerReferenceURL = "assets-library://asset/asset.JPG?id=9F983DBA-EC35-42B8-8773-B597CF782EDD&ext=JPG";     */    //    UIImagePickerControllerEditedImage//编辑过的图片    //    UIImagePickerControllerOriginalImage//原图    //刚才已经看了info中的键值对,可以从info中取出一个UIImage对象,将取出的对象赋给_imageView    UIImage *resultImage = [info objectForKey:@"UIImagePickerControllerEditedImage"];    _imageView.image = resultImage;    //使用模态返回到软件界面    [self dismissViewControllerAnimated:YES completion:nil];}//点击取消按钮所执行的方法- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{    //这是捕获点击右上角cancel按钮所触发的事件,如果我们需要在点击cancel按钮的时候做一些其他逻辑操作。就需要实现该代理方法,如果不做任何逻辑操作,就可以不实现    [self dismissViewControllerAnimated:YES completion:nil];}

菜鸟一个,技术还很青涩,如有不对之处,还请批评指正!

0 0
原创粉丝点击