ios - iOS Swift Camera Picker 透明上下
问题描述
是否可以使相机选择器看起来像拍摄视频时的样子。
现在是这样的:
我想让它看起来更像这样:
解决方案
您不能完全按照您使用 UIImagePickerController 提供的屏幕截图进行操作,您需要直接使用AVFoundation并围绕相机预览创建一个 UI。
Apple 在这里解释了基础知识,并且在网络上提供了多个教程,例如这个教程,它将向您解释您需要了解的关于拍摄静态或现场照片的所有信息。
编辑:您可以使用 UIImagePickerController 来做到这一点
您需要首先将 showsCameraControls 属性设置为 false。然后您需要使用您自己的控件(例如 UIButton,它是一个 UIView)添加您自己的带有 cameraOverlayView 属性的叠加层,然后将诸如 takePictures() 之类的函数分配给您的按钮以拍照。
imagePicker.sourceType = .camera
imagePicker.showsCameraControls = false
imagePicker.delegate = self
imagePicker.cameraOverlayView = yourOverlayWithWithButtons
相机预览需要转换为全屏(3x 比例很大,但至少在 iPhone X 上使预览显示为全屏,您当然可以改进):
imagePicker.cameraViewTransform = CGAffineTransform(scaleX: 3, y: 3)
小心 cameraOverlayView 属性的Apple文档说:
仅当图像选择器的源类型设置为 UIImagePickerController.SourceType.camera 时,您才能访问此属性。尝试访问其他源类型的此属性会导致引发 invalidArgumentException 异常。
查看有关UIImagePickerController、cameraOverlayView和showCameraControls的 Apple 文档。
推荐阅读
- html - 单击我的源代码时如何突出显示 VScode 实时服务器中的部分?
- javascript - 设置间隔函数不作为方法工作
- java - Libgdx Liquidfan android错误
- zip - 使用带有 zip 的 Akeeba 发布系统的 Joomla 3 问题
- networkx - pythonic删除边缘属性的方法
- android - MediaCompat - 挂钩按钮
- javascript - HtmlAudioElement 音频时间延迟
- ios - Swift:如果使用 DropDown() 会导致应用程序崩溃
- mysql - 匹配所有单词的 MySQL 全文搜索查询仍然返回部分匹配
- azure - 从 Azure VM 中删除首选 DNS