如何仅为从 iOS 中的照片库中选择的视频设置 UIImagePickerController 的allowEditing?
Posted
技术标签:
【中文标题】如何仅为从 iOS 中的照片库中选择的视频设置 UIImagePickerController 的allowEditing?【英文标题】:How to set allowsEditing for UIImagePickerController only for videos selected from photo library in iOS? 【发布时间】:2014-12-01 06:58:54 【问题描述】:我在我的应用程序中使用 UIImagePickerController。 我在按钮操作中显示以下警报。
我的代码在 alertview 委托方法中如下所示:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
if ([alertView.title isEqualToString:@"Choose"])
if (buttonIndex == 1) //Camera
[self presentImagePickerControllerWithCamera:YES];
else if(buttonIndex == 2) //Library
[self presentImagePickerControllerWithCamera:NO];
而“presentImagePickerControllerWithCamera”方法的内容是:
- (void)presentImagePickerControllerWithCamera:(BOOL)isCamera
CFStringRef mTypes[2] = kUTTypeImage, kUTTypeMovie ;
CFArrayRef mTypesArray = CFArrayCreate(CFAllocatorGetDefault(), (const void**)mTypes, 2, &kCFTypeArrayCallBacks);
imagePickerController.mediaTypes = (__bridge NSArray*)mTypesArray;
imagePickerController.videoMaximumDuration = 60.0f;
CFRelease(mTypesArray);
if (isCamera) // Showing the camera (Both Camera and video)
imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePickerController.videoQuality = UIImagePickerControllerQualityTypeMedium;
imagePickerController.allowsEditing = NO;
else // Showing library (Both Pictures and videos)
imagePickerController.allowsEditing = YES;
imagePickerController.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
[self presentViewController:imagePickerController animated:YES completion:nil];
在这里,当用户从库中选择视频时,我需要将视频限制为 1 分钟,所以我写了
imagePickerController.videoMaximumDuration = 60.0f;
和
imagePickerController.allowsEditing = YES;
它工作正常。但是当用户从库中选择图片时,我不想编辑(图片上的方框)。 有什么方法可以实现吗?
任何建议将不胜感激。 提前致谢。
【问题讨论】:
【参考方案1】:您当前的代码无法做到这一点。
您已将两种媒体类型一起分配。这将在照片库中显示图像和视频。一旦UIImagePickerController
将显示您将无权访问它,我的意思是您在代表接听电话之前无法知道用户将选择什么(图像或视频)。
因此,要在您的案例中实现这一点,您必须一次设置每种媒体类型。并且根据该媒体类型,必须设置allowsEditing
属性。
【讨论】:
以上是关于如何仅为从 iOS 中的照片库中选择的视频设置 UIImagePickerController 的allowEditing?的主要内容,如果未能解决你的问题,请参考以下文章