美文网首页
UIImagePickerController从本地相册取图片

UIImagePickerController从本地相册取图片

作者: 其实你懂De | 来源:发表于2016-07-31 11:41 被阅读35次

这个功能其实也很常见,我们登陆qq等界面时换头像时都需要这个UIImagePickerController来完成


屏幕快照 2016-07-31 上午11.02.58.png

例如像这样的登录界面,我们一点头像他就会弹出一些提示框,其实就有通过本地相册来换我们的头像。
好了,废话不多说,开车!
首先我们建立一个ImageView在屏幕上

- (void)createImage {
    self.imageHeader = [[UIImageView alloc]init];
    [self.view addSubview:_imageHeader];
    _imageHeader.frame = CGRectMake(0, 0, 100, 100);
    _imageHeader.center = self.view.center;
    _imageHeader.image = [UIImage imageNamed:@"{5286CB3E-46B8-CB84-1E40-5B208D83973E}.jpg"];
    _imageHeader.layer.cornerRadius =  100 / 2;//把图片切成圆
    _imageHeader.clipsToBounds = YES;
    _imageHeader.userInteractionEnabled = YES;// 图片用户交互是关闭的,我们需要点击它发生事件,所以我们要打开用户交互
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handle)];// 加手势
    
    [self.imageHeader addGestureRecognizer:tap];
//  NSUserDefaults 用于储存对象的,永久化存储对象,是一个单例,我们想要将图片永久化的存储到 NSUserDefaults中。
    NSUserDefaults *users = [NSUserDefaults standardUserDefaults];
    if ([users dataForKey:@"imag"]) {
        [_imageHeader setImage:[UIImage imageWithData:[users dataForKey:@"imag"]]];
    }
  }
#pragma mark -------系统图片
//点击qq头像触发的事件
// 需要在此VC签订代理 <UINavigationControllerDelegate,UIImagePickerControllerDelegate> 需要同时 签订两个协议
- (void)handle {
    UIImagePickerController *picker = [[UIImagePickerController alloc]init];
    picker.delegate = self;
    picker.allowsEditing = YES;// 是否同意编辑
    [self presentViewController:picker animated:YES completion:^{
        
    }];
    
}
#pragma mark -------编辑完照片就会走的方法  保存编辑过的图片
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info {
    //保存编辑照片
    UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
    if (image != nil) {
        _imageHeader.image = image;
    }
    NSData *data;
// 判断照片类型
    if (UIImagePNGRepresentation(image)) {
        data = UIImagePNGRepresentation(image);
    }
    else {
        data = UIImageJPEGRepresentation(image, 1.0);
        
        
    }
// _imaPath 是定义的一个属性,记录文件管理器(NSFileManager)的文件名
    [[NSFileManager defaultManager] createFileAtPath:_imaPth contents:data attributes:nil];
    NSUserDefaults *user =[NSUserDefaults standardUserDefaults];
// 从   NSUserDefaults 中取出照片
    [user setObject:data forKey:@"imag"];
    [self dismissViewControllerAnimated:YES completion:nil];
 }

点击头像时会出现这样的

屏幕快照 2016-07-31 上午11.39.09.png

点进去就可以编辑照片了

屏幕快照 2016-07-31 上午11.40.09.png

其实并不难 ,但是这个挺常用的,希望对大家有用!

相关文章

网友评论

      本文标题:UIImagePickerController从本地相册取图片

      本文链接:https://www.haomeiwen.com/subject/swststtx.html