如何仅为从 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?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 iPad 访问我的照片库和摄像机

目录中的视频缩略图

应用程序无法访问您的照片或视频 iOS 9

如何在 iOS Swift 中显示库中的实时照片视频并在 Collection-View 中显示?

如何在文档中显示所有视频以及相册中的照片?

如何在 Xamarin 表单中使用 MVVM 仅为集合视图中的选定框架设置颜色?