gpt4 book ai didi

ios - 如何使用枚举制作切换开关

转载 作者:可可西里 更新时间:2023-11-01 01:09:57 26 4
gpt4 key购买 nike

我正在研究为相机输入制作一个切换开关。我的目标是拥有一个我可以调用的枚举,如 CameraPosition.rearCameraPosition.front 并且相机输入会相应地改变。这是我到目前为止得到的:

    var currentCameraPosition: CameraPosition?
var frontCameraInput: AVCaptureDeviceInput?
var rearCameraInput: AVCaptureDeviceInput?
var currentCameraInput: AVCaptureDeviceInput?

enum CameraPosition {
case front
case rear

func toggle(){
switch self {
case .front:
currentCameraInput = frontCameraInput
case .rear:
currentCameraInput = rearCameraInput
}
}
}

问题是我的编译器提示 Instance member 'currentCameraInput' cannot be used on type 'Camera'。我应该如何解决这个问题,或者我该如何重写它?

最佳答案

如果您愿意,您完全可以为此使用枚举。我建议使用 didSet 进行切换,而不必设置您的 CameraPosition 然后单独调用 toggle。这样,设置您的相机位置将自动更新您的相机输入。我会这样设置:

var currentCameraPosition: CameraPosition? {
didSet {
if let position = currentCameraPosition {
switch position {
case .front: currentCameraInput = frontCameraInput
case .rear: currentCameraInput = rearCameraInput
}
}
}
}
var frontCameraInput: AVCaptureDeviceInput?
var rearCameraInput: AVCaptureDeviceInput?
var currentCameraInput: AVCaptureDeviceInput?

enum CameraPosition {
case front
case rear
}

您甚至可以放弃开关并使用三元运算符,因为您只有 2 个选项:

var currentCameraPosition: CameraPosition? {
didSet {
if let position = currentCameraPosition {
currentCameraInput = position == .front ? frontCameraInput : rearCameraInput
}
}
}

关于ios - 如何使用枚举制作切换开关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48121343/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com