设置图像选择器sourceType,以便只能选择图片和视频

Bry*_*ell 5 objective-c uiimagepickercontroller ios

我希望用户能够使用相机但不能选择拍摄视频.目前,当用户启动相机时,照片和视频控件都显示在视图的左下角.下面是我的launchCamera和imagePickerController方法.

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

self.image = [info objectForKey:UIImagePickerControllerOriginalImage];
self.challengePic.image = self.image;
if (self.imagePicker.sourceType == UIImagePickerControllerSourceTypeCamera) {
    UIImageWriteToSavedPhotosAlbum(self.image, nil, nil, nil);
    self.challengePic.image = self.image;

    }

[self dismissViewControllerAnimated:YES completion:nil];
}


- (IBAction)launchCamera:(id)sender {
if (self.image == nil && [self.videoFilePath length] == 0) {
    self.imagePicker = [[UIImagePickerController alloc] init];
    self.imagePicker.delegate = self;
    self.imagePicker.allowsEditing = NO;

    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
        self.imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
    }
    else {
        self.imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    }
    self.imagePicker.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:self.imagePicker.sourceType];

    [self presentViewController:self.imagePicker animated:NO completion:nil];
}

}

- (IBAction)launchAlbum:(id)sender {
if (self.image == nil && [self.videoFilePath length] == 0) {
    self.imagePicker = [[UIImagePickerController alloc] init];
    self.imagePicker.delegate = self;
    self.imagePicker.allowsEditing = NO;

    self.imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

    self.imagePicker.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:self.imagePicker.sourceType];

    [self presentViewController:self.imagePicker animated:NO completion:nil];
}

}
Run Code Online (Sandbox Code Playgroud)

有没有办法设置图像选择器sourceType,以便只能选择图片和视频?提前致谢!

bey*_*ulf 12

不要包含此行:

self.imagePicker.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:self.imagePicker.sourceType];
Run Code Online (Sandbox Code Playgroud)

来自UIImagePickerController类的参考:

默认情况下,此属性设置为单值kUTTypeImage,用于在捕获媒体时指定静态相机界面,并指定在浏览已保存的媒体时,只应在媒体选择器中显示静止图像.要指定电影捕获界面,或指示在浏览已保存的媒体时仅显示电影,请使用kUTTypeMovie标识符....


rma*_*ddy 9

如果您只想选择图像,请不要将mediaTypes属性设置为给定源的所有可能的媒体类型.

默认情况下,图像选择器仅显示照片库中的图像.

但您的设置mediaTypes是覆盖此默认设置并允许视频.