UIImagePickerController allowEditing = YES仅用于视频

Dar*_*ren 9 video camera uiimagepickercontroller ios

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

videoMaximumDuration录制视频时,图像选择器的设置工作正常,但如果从相机胶卷中选择,则只会通知用户视频过长(如果allowsEditing已启用).

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

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

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

这甚至可能吗?

谢谢

Seg*_*gev 2

为什么不创建 2 甚至 4UIImagePickerController秒而不是乱搞通知呢?

- (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];
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:

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