首页 > 解决方案 > iOS Swift Camera Picker 透明上下

问题描述

是否可以使相机选择器看起来像拍摄视频时的样子。

现在是这样的:

我想让它看起来更像这样:

标签: iosswiftuiimagepickercontroller

解决方案


您不能完全按照您使用 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 异常。

查看有关UIImagePickerControllercameraOverlayViewshowCameraControls的 Apple 文档。


推荐阅读