图片上传与显示的实现
使用 UIImagePickerController 从相册上传图片
使用方法:
- 在视图控制器.h 文件中声明代理:
@interface myViewController : ViewController<UIImagePickerControllerDelegate>
// ...
@end
- 实现必须的代理函数:
#pragma mark - UIImagePickerControllerDelegate
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<UIImagePickerControllerInfoKey,id> *)info{
// 选取完图片后切换回原控制器
[picker dismissViewControllerAnimated:YES completion:nil];
[self.view layoutSubviews]; // 刷新一下页面,不然要半天才自然刷新
// 从参数 info 中将图片取出,并加载到imageView当中
/* 此处参数 info 是一个字典,下面是字典中的键值 (从相机获取的图片和相册获取的图片时,两者的info值不尽相同)
* UIImagePickerControllerMediaType; // 媒体类型
* UIImagePickerControllerOriginalImage; // 原始图片
* UIImagePickerControllerEditedImage; // 裁剪后图片
* UIImagePickerControllerCropRect; // 图片裁剪区域(CGRect)
* UIImagePickerControllerMediaURL; // 媒体的URL
* UIImagePickerControllerReferenceURL // 原件的URL
* UIImagePickerControllerMediaMetadata // 当数据来源是相机时,此值才有效
*/
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
// 下面就可以将 image 放到 imageView 什么的了
imageView *imgTmp = [[imageView alloc] initWithFrame:CGRectMake(0, 0, 95, 95)];
imgTmp.image = image;
}
- 进行 ImagePicker 视图模态切换
UIImagePickerController *pickVC = [[UIImagePickerController alloc] init];
pickVC.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
pickVC.delegate = self;
pickVC.allowsEditing = YES;
// 切换至图片选择控制器
[self presentViewController:pickVC animated:YES completion:^{}];