这个功能其实也很常见,我们登陆qq等界面时换头像时都需要这个UIImagePickerController来完成
例如像这样的登录界面,我们一点头像他就会弹出一些提示框,其实就有通过本地相册来换我们的头像。
好了,废话不多说,开车!
首先我们建立一个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];
}
点击头像时会出现这样的
点进去就可以编辑照片了
其实并不难 ,但是这个挺常用的,希望对大家有用!