Swift中如何禁用UIImagePickerController图库图片编辑,仅允许视频编辑?
嘿,刚好我之前处理过类似的需求,图库场景下要实现「仅视频允许编辑,图片禁用编辑」其实很简单,用UIImagePickerController的代理方法就能搞定,给你一步步讲:
核心思路
我们可以先开启图库选择器的编辑权限,然后通过代理方法针对不同媒体类型(图片/视频)动态控制是否显示编辑界面——视频放行,图片直接跳过编辑步骤。
具体实现步骤
导入必要框架
首先要导入MobileCoreServices,这样我们能准确识别媒体类型:import MobileCoreServices初始化图库选择器
创建UIImagePickerController实例,设置源为图库,开启编辑权限并指定代理:let galleryPicker = UIImagePickerController() galleryPicker.sourceType = .photoLibrary galleryPicker.allowsEditing = true galleryPicker.delegate = self // 可选:限制仅能选择图片和视频(如果不需要其他媒体类型的话) galleryPicker.mediaTypes = [kUTTypeImage as String, kUTTypeMovie as String]实现代理方法控制编辑权限
遵守UIImagePickerControllerDelegate和UINavigationControllerDelegate协议后,实现下面这个代理方法,对选中的媒体类型做判断:func imagePickerController(_ picker: UIImagePickerController, shouldShowViewController viewController: UIViewController, forMediaType mediaType: String) -> Bool { // 仅当选中的是视频时,允许显示编辑界面 return mediaType == kUTTypeMovie as String }这个方法会在picker准备加载编辑界面时被触发,返回
true就显示编辑工具,返回false直接跳过编辑环节,回到你后续的回调逻辑。别忘了声明协议
在你的ViewController类声明里加上对应的协议:class YourViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { // ...你的其他业务代码 }
这样设置后,用户从图库选图片时不会进入编辑界面,选视频时则能正常打开编辑工具,完美匹配你的需求~
内容的提问来源于stack exchange,提问作者Daniel Plata
相关产品推荐
相关产品推荐

