ios - UIImagePickerController allowsEditing=YES 仅用于视频

标签 ios video camera uiimagepickercontroller

我正在使用 UIImagePickerController 让用户选择照片或视频。我面临的问题是,我使用自己的图像编辑器来编辑照片,所以想要 allowsEditing=NO 来编辑照片,但是视频必须有一定的长度,所以我想要 allowsEditing=YES用于视频。

为图像选择器设置 videoMaximumDuration 在录制视频时效果很好,但如果从相机胶卷中选择它只会通知用户视频太长,如果 allowsEditing 是启用。

到目前为止,我可以通过监听 ImageControlModeChanged 通知在使用相机时成功更改 allowsEditing 属性。然后我可以使用以下方法更改属性:

- (void)imageCaptured:(NSNotification *)notification
{
    if (imagePicker.cameraCaptureMode == UIImagePickerControllerCameraCaptureModeVideo) {
        imagePicker.allowsEditing = YES;
    } else {
        imagePicker.allowsEditing = NO;
    }
}

但是,当从相机胶卷中选择时,这不起作用。我已经监视了通知,但看不到一个对根据选择的项目更改 allowsEditing 属性有用的通知。

这可能吗?

谢谢

最佳答案

为什么不创建 2 个甚至 4 个 UIImagePickerController 而不是乱用通知?

- (void) useCamera
{
    if ([UIImagePickerController isSourceTypeAvailable:
         UIImagePickerControllerSourceTypeCamera])
    {
        UIImagePickerController *imagePicker =
        [[UIImagePickerController alloc] init];
        imagePicker.delegate = self;
        imagePicker.sourceType =
        UIImagePickerControllerSourceTypeCamera;
        imagePicker.mediaTypes = [NSArray arrayWithObjects:
                                  (NSString *) kUTTypeImage,
                                  nil];
        imagePicker.allowsEditing = NO;
        [self presentViewController:imagePicker animated:YES completion:nil];
    }
}

- (void) useCameraRoll
{
    if ([UIImagePickerController isSourceTypeAvailable:
         UIImagePickerControllerSourceTypeSavedPhotosAlbum])
    {
        UIImagePickerController *imagePicker =
        [[UIImagePickerController alloc] init];
        imagePicker.delegate = self;
        imagePicker.sourceType =
        UIImagePickerControllerSourceTypePhotoLibrary;
        imagePicker.mediaTypes = [NSArray arrayWithObjects:(NSString *) kUTTypeImage,nil];
        imagePicker.allowsEditing = NO;
        [self presentViewController:imagePicker animated:YES completion:nil];
    }
}

- (void)videoRoll
{

    if ([UIImagePickerController isSourceTypeAvailable:
         UIImagePickerControllerSourceTypeSavedPhotosAlbum])
    {
        UIImagePickerController *imagePicker =
        [[UIImagePickerController alloc] init];
        imagePicker.delegate = self;
        imagePicker.sourceType =
        UIImagePickerControllerSourceTypePhotoLibrary;
        imagePicker.mediaTypes = [NSArray arrayWithObjects:
                                  (NSString *) kUTTypeImage,
                                  nil];
        imagePicker.allowsEditing = YES;
        imagePicker.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie];
        [self presentViewController:imagePicker animated:YES completion:nil];
    }
}

- (void)vidCam
{
    if ([UIImagePickerController isSourceTypeAvailable:
         UIImagePickerControllerSourceTypeSavedPhotosAlbum])
    {
        UIImagePickerController *imagePicker =
        [[UIImagePickerController alloc] init];
        imagePicker.delegate = self;
        imagePicker.sourceType =
        UIImagePickerControllerSourceTypeCamera;
        imagePicker.mediaTypes = [NSArray arrayWithObjects:
                                  (NSString *) kUTTypeImage,
                                  nil];
        imagePicker.allowsEditing = NO;
        imagePicker.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie];
        [self presentViewController:imagePicker animated:YES completion:nil];
    }
}

编辑:

在更好地理解这个问题之后,我认为这是不可能的。您可以使用一些通知,但这些通知没有在任何地方记录或在 iOS7 上工作。如果确实如此,我能想到的最佳解决方案是使用第三方,例如 github.com/andrei200287/SAVideoRangeSlider 和 allowsEditing = NO 来处理所有问题。

关于ios - UIImagePickerController allowsEditing=YES 仅用于视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20373565/

相关文章:

iphone - UIAlertView 能否通过委托(delegate)传递字符串和 int

Ios popToRootViewControllerAnimated 导致内存问题

video - iOS6后台支持airplay的方法

macos - Snow Leopard 是否有/dev/video(如何从终端访问网络摄像头?)

android - 图像 Intent 和后按

iphone - 应用程序未出现在设置中的 "Notifications"下

ios - 从 iOS 应用发出到 MS Excel 的深度链接

ios - 使用 MPMoviePlayerController 而不是 UIWebView 播放 YouTube 视频

ios - 如何获取iOS视频嵌入的分析(og:video)

java - getNumberOfCameras() 总是返回 0