如何使用/用于 UIImagePickerController 显示所有相机控件?

Posted

技术标签:

【中文标题】如何使用/用于 UIImagePickerController 显示所有相机控件?【英文标题】:How to show all camera controls with/for UIImagePickerController? 【发布时间】:2015-11-19 19:44:34 【问题描述】:

我在使用 UIImagePickerController 时无法显示相机控件。具体来说,我需要能够在慢动作、视频、照片、方形和全景之间进行选择。

我使用的代码的基本部分是:

UIImagePickerController *pc = [[UIImagePickerController alloc] init];
[pc setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
pc.mediaTypes = [[NSArray alloc] initWithObjects:(NSString *)kUTTypeImage, nil];

但这显示了一个只能拍照的选择器控制器,即没有正方形或全景模式。

将 pc.mediaTypes 设置为:

pc.mediaTypes = [[NSArray alloc] initWithObjects:(NSString *)kUTTypeImage, (NSString *)kUTTypeMovie, nil];

..显示带有视频和照片的选择器控制器。但是如何让其他相机模式/类型显示?例如。 pano 的 UTType 是什么?

【问题讨论】:

【参考方案1】:

UIImagePickerController 不会让您在自己的应用程序中使用 Apple 的整个相机应用程序。并非相机应用程序的所有功能都可用。你可以通过调用 -[UIImagePicker availableMediaTypesForSourceType:] 来打印可用的媒体类型,你会发现你得到了 kUTTypeImage 和 kUTTypeMovie。

UIImagePickerController 不提供方形、慢动作、延时和全景功能。

【讨论】:

无赖,感谢您确认缺少对这些附加功能的支持。无论如何要克服这个?即,除了uiimagepickercontroller,还有其他的拍照方式吗? 捕获媒体的另一种方法是使用 AVFoundation 框架。这是一项艰巨的任务,但允许完全自定义媒体捕获。要开始使用,我建议您查看github.com/omergul123/LLSimpleCamera,了解 AVFoundation 相机的一个很好的实现。对于方形裁剪,我发现 github.com/JGINGIT/InstagramAssetsPicker 很有帮助。【参考方案2】:

UIImagePickerController 出现在 ios 2.0 中,在当时可能是现代的:

https://developer.apple.com/documentation/uikit/uiimagepickercontroller?language=objc

您看到的是“标准控件”。

即使在今天,现代文档仍指向遗留问题(Objective-C 时代的文档)

chrome 的样式发生了变化,但正如他们所说:“歌曲保持不变。”

有隐藏标准控件的钩子,然后您可以添加自己的客户控件以编程方式操作相机。我有一个宠物项目,可以制作延时摄影等版本。

但对于严肃的项目,Apple 建议使用 AV 框架,虽然我还没有开始使用它们,但我当然同意。

【讨论】:

以上是关于如何使用/用于 UIImagePickerController 显示所有相机控件?的主要内容,如果未能解决你的问题,请参考以下文章

如何将UIImagePicker图像转换为字节数组objective-c

SwiftUI 全屏 UIImagePickerController(相机)

裁剪和旋转 UIImagePickerController 选择的照片

iOS 图片上传处理 图片压缩 图片处理

为啥此裁剪代码会导致图像旋转?

iOS 8 UIImagePickerController 在横向模式下具有黑色预览