ios - 如何在 Xcode 中使用 AVFoundation 在 11 个专业相机之间切换
问题描述
我刚刚开始在 Xcode 中学习 Swift,并且正在创建一个简单的相机应用程序来启动和运行。我有一个按钮,可以在前置和后置摄像头之间切换,但我想添加一个选项,以便在 iPhone 11 Pro 上的 Tele 和 Ultra Wide 镜头之间切换。
我已经创建了为每个镜头运行新 CaptureSession 的函数(如果检测到),但只是想知道如何将这些函数调用到 UIbutton 函数
让我摸不着头脑的是用于在前后摄像头之间切换的 if 语句说if input.device.position == .back {
这仅是正面或背面的特殊性,而不是镜头本身。每次按下按钮时,制作按钮然后从前面更改为广角、长焦、超广角并返回到前面的有效方法是什么?
对任何滥用术语表示歉意,我对 Swift 编码非常陌生。谢谢!
{
guard let CurrentCameraInput: AVCaptureInput = CaptureSession?.inputs.first else {
return
}
if let input = CurrentCameraInput as? AVCaptureDeviceInput
{
if input.device.position == .back {
SwitchToFrontCamera() }
if input.device.position == .front {
SwitchToBackCamera()
}
}
}
解决方案
欢迎!
检查你的这个初始化程序AVCaptureDevice
。您可以指定DeviceType
要使用的 ,例如.builtInUltraWideCamera
或.builtInTelephotoCamera
。
您可以使用 aAVCaptureDevice.DiscoverySession
获取应用程序可用的所有捕获设备的列表。
推荐阅读
- angular - 在 Angular 9 中,如何强制 http 客户端响应模型中的属性日期类型?
- javascript - $window.scroll(showScroll()) 不起作用但 onscoll="showScroll()" 是?
- python - 当滚动条没有带有 Selenium for python 的标签时向下滚动
- mysql - MySQL - 根据同一张表中的另一行值计算行值
- c++ - 是否可以按顺序执行“cout”?
- ethereum - 如何使时间锁定后自动提供LP
- android - 有没有办法通过点击 Compose Scaffold 中的 TopAppBar 中的 IconButton 打开网页?
- python - Pandas 通过数据框搜索缺少变音符号的单词
- python - 使用 selenium_python 抓取类下的属性
- python - python小提琴图规则轴