①初始化UIImagePickerController
self.imagePicker=[[UIImagePickerController alloc] init];
②遵守协议
@interface ViewController ()<UIImagePickerControllerDelegate,UINavigationControllerDelegate>
③
//设置代理
_imagePicker.delegate=self;
//可编辑
_imagePicker.allowsEditing=YES;
④
//设置头像图片圆角
_selectedRightImage.layer.cornerRadius=100; _selectedRightImage.layer.borderWidth=6; _selectedRightImage.layer.masksToBounds=YES; _selectedRightImage.layer.borderColor=[[UIColor whiteColor] CGColor]; self.selectedRightImage.userInteractionEnabled=YES;
⑤给图片添加点击事件
UITapGestureRecognizer *tapPicture=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(selectedImageForIcon)];
[_selectedRightImage addGestureRecognizer:tapPicture];
⑥从相册,图库,相机获取图片
-(void)selectedImageForIcon { UIAlertController *alertController=[UIAlertController alertControllerWithTitle:@"" message:@"" preferredStyle:UIAlertControllerStyleActionSheet]; UIAlertAction *actionCamera=[UIAlertAction actionWithTitle:@"打开相机" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { _imagePicker.sourceType=UIImagePickerControllerSourceTypeCamera; [self presentViewController:_imagePicker animated:YES completion:nil]; }]; UIAlertAction *actionPhotoLIbrary=[UIAlertAction actionWithTitle:@"打开相册" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { _imagePicker.sourceType=UIImagePickerControllerSourceTypePhotoLibrary; [self presentViewController:_imagePicker animated:YES completion:nil]; }]; UIAlertAction *actionPhotoAlbum=[UIAlertAction actionWithTitle:@"打开图库" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { _imagePicker.sourceType=UIImagePickerControllerSourceTypeSavedPhotosAlbum; [self presentViewController:_imagePicker animated:YES completion:nil]; }]; UIAlertAction *cancelAction=[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil]; [alertController addAction:actionCamera]; [alertController addAction:actionPhotoAlbum]; [alertController addAction:actionPhotoLIbrary]; [alertController addAction:cancelAction]; [self presentViewController:alertController animated:YES completion:nil]; }
实现这个方法就可以更换头像了!!!
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(nullable NSDictionary<NSString *,id> *)editingInfo { _selectedRightImage.image=image; [self dismissViewControllerAnimated:YES completion:nil]; }
最终效果图: