UIImagePickerController不显示视频的问题
一、问题
打开系统相册,里面只有照片没有视频。
二、分析
打开系统媒体库,发现在iOS12上只显示照片,不显示视频,iOS13显示照片和视频,其他系统未测试,代码如下:
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.allowsEditing = NO;
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
picker.delegate = self;
[self presentViewController:picker animated:YES completion:nil];
先来看一下picker的资源类型
typedef NS_ENUM(NSInteger, UIImagePickerControllerSourceType) {
UIImagePickerControllerSourceTypePhotoLibrary,
UIImagePickerControllerSourceTypeCamera,
UIImagePickerControllerSourceTypeSavedPhotosAlbum
} __TVOS_PROHIBITED;
别分是媒体库、相机、相册,想来媒体库中应该包含视频和照片,但是在iOS12.4的手机上就是没显示视频。
三、解决
显示视频
picker.mediaTypes = [NSArray arrayWithObjects:@"public.movie", nil];
显示照片
picker.mediaTypes = [NSArray arrayWithObjects:@"public.image", nil];
显示照片和视频
picker.mediaTypes = [NSArray arrayWithObjects:@"public.image", @"public.movie",nil];
设置为拍照或者录像
picker.mediaTypes = @[(NSString*)kUTTypeImage,(NSString*)kUTTypeMovie];
问题解决了,代码如下:
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.allowsEditing = NO;
picker.mediaTypes = [NSArray arrayWithObjects:@"public.image", @"public.movie",nil];
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
picker.delegate = self;
[self presentViewController:picker animated:YES completion:nil];
四、代码
打开媒体库显示视频
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.allowsEditing = NO;
//只显示视频
//picker.mediaTypes = [NSArray arrayWithObjects:@"public.movie",nil];
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
picker.mediaTypes = @[(NSString *)kUTTypeMovie];//选择视频
picker.delegate = self;
[self presentViewController:picker animated:YES completion:nil];
使用picker.mediaTypes = [NSArray arrayWithObjects:@"public.movie",nil]; p
或 picker.mediaTypes = @[(NSString *)kUTTypeMovie];//选择视频
sourceType使用picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum
或者picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary
都可以。
打开照片显示照片和视频
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
picker.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:picker.sourceType];
picker.delegate = self;
picker.editing = NO;
[self presentViewController:picker animated:YES completion:nil];