簡體   English   中英

UIImagePickerController allowEditing = YES僅用於視頻

[英]UIImagePickerController allowsEditing=YES just for video

我正在使用UIImagePickerController讓用戶選擇照片或視頻。 我面臨的問題是,我使用自己的圖片編輯器拍攝照片,所以想要照片的編輯是否allowsEditing=NO編輯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

在view do load中嘗試此賦值屬性,而不是在imageCaptured方法中。 它工作正常

 videoController.delegate = self;
    videoController.sourceType =UIImagePickerControllerSourceTypePhotoLibrary;
    videoController.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:videoController.sourceType];
    videoController.allowsEditing = YES;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM