这两天帮个小学弟写毕设的时候写到这个获取照片功能,还有点忘记了,写在这里,方便查询
//先提几个参数
小结:1.UIImagePickerControllerSourceTypePhotoLibrary 图片列表
UIImagePickerControllerSourceTypeCamera 摄像头
UIImagePickerControllerSourceTypeSavedPhotosAlbum 相机相册
2.在调取摄像头和调取相册的时候我们可以重用协议中的方法
3.UIImagePickerController是继承 UINavigationController,所以可以push和pop一些viewcontroller进行导航效果。例如,自定义照相机画面的时候可以在拍摄完后push一个viewcontroller用于对照片进行编辑
我们要对我们拍摄的照片和视频进行存储,那么就要实现UIImagePickerControllerDelegate协议的方法
UIImagePickerControllerDelegate, UINavigationControllerDelegate
//摄像头
- (void)openCamera:(UIButton *)btn {
// UIImagePickerControllerCameraDeviceRear 后置摄像头
// UIImagePickerControllerCameraDeviceFront 前置摄像头
//判断摄像头是否可用
BOOL isCamera = [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear];
if (!isCamera) {
NSLog(@"没有摄像头");
return;
}
//初始化图片选择控制器
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;//设置通过照相来选取照片
imagePicker.allowsEditing = YES; //设置拍照时的下方的工具栏是否显示,如果需要自定义拍摄界面,则可把该工具栏隐藏
imagePicker.delegate = self;
[self presentViewController:imagePicker animated:YES completion:nil];
// [imagePicker dismissViewControllerAnimated:YES completion:NULL];//以模态的方式隐藏视图
}
// 相册
- (void)openPics:(UIButton *)btn {
UIImagePickerController *controller = [[UIImagePickerController alloc] init];//初始化图片选择控制器
[controller setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];// 设置类型
[controller setDelegate:self];// 设置代理
[self presentViewController:controller animated:YES completion:^{
}];//以模态的方式弹出视图
}
实现的代理方法
//得到图片或者视频后, 调用该方法
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
//在这个方法里我们可以进行图片的修改, 保存, 或者视频的保存
// UIImagePickerControllerOriginalImage 原始图片
// UIImagePickerControllerEditedImage 编辑后图片
UIImageView *imageView = (UIImageView *)[self.view viewWithTag:101];
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
imageView.image = image;
[picker dismissViewControllerAnimated:YES completion:NULL];
}
//当用户取消相册时, 调用该方法
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
[picker dismissViewControllerAnimated:YES completion:^{
}];
}
万里长城始于足下~~~~