本文代码内容适合跳转本地相册界面, 例如: 单图操作, 单视频操作.
多个图操作, 多个视频操作参考
iOS 获取本地相册图片视频(二)
代码思路
1.设置访问相机相册权限
2.引入框架
3.跳转相册界面
4.根据回调获取用户选择的文件(图片或视频)
详细内容
1.设置访问相机相册权限
.plist 的添加方式:
添加下面的一项,提示文字自定义
Privacy - Photo Library Additions Usage Description
source code的添加方式:
<key>NSPhotoLibraryUsageDescription</key>
<string>App需要您的同意,才能访问相册</string>
2.引入框架
#import <AVFoundation/AVCaptureDevice.h>
#import <AVFoundation/AVMediaFormat.h>
#import <Photos/Photos.h>
#import <AssetsLibrary/AssetsLibrary.h>
--
3.跳转相册界面
设置协议
<UIImagePickerControllerDelegate>
初始化相册界面并添加相册界面
// 初始化相册界面
UIImagePickerController *pickerController = [[UIImagePickerController alloc]init];
// 设置相册类型
pickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
// 手机选择一段视频或一张图片
// kUTTypeMovie: 视频
// kUTTypeImage: 图片
pickerController.mediaTypes =@[(NSString*)kUTTypeMovie, (NSString*)kUTTypeImage];
// 签协议
pickerController.delegate = self;
// 添加相册界面
[self.view addSubview:pickerController.view];
--
4.根据回调获取用户选择的文件(图片或视频)
#pragma mark - UIImagePickerControllerDelegate
// 相册界面: 用户未选择文件, 按下取消按钮走这个回调
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
// 移除相册界面
[picker.view removeFromSuperview];
}
// 相册界面: 用户选择了一个文件, 获取到用户选择的文件
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
{
// 移除相册界面
[picker.view removeFromSuperview];
// 文件显示的图片
UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
// 获取文件类型:
NSString *mediaType = info[UIImagePickerControllerMediaType];
if ([mediaType isEqualToString:(NSString*)kUTTypeImage]) {
// 用户选的文件为图片类型(kUTTypeImage)
}else if([mediaType isEqualToString:(NSString*)kUTTypeMovie]){
// 用户选的文件为视频类型(kUTTypeMovie)
// 获取视频对应的URL
NSURL *url = info[UIImagePickerControllerMediaURL];
// 上传视频时用到data
NSData *data = [NSData dataWithContentsOfURL:url];
}
}
注意:个人理解,若有错误请指正,谢谢!!!
网友评论