![](/img/trans.png)
[英]UIImagePickerController allowsEditing = YES not working
[英]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.