gpt4 book ai didi

ios - 如何在 Swift 4 中设置设备的闪光灯模式?

转载 作者:搜寻专家 更新时间:2023-10-30 22:26:43 24 4
gpt4 key购买 nike

我正在调用一个函数来尝试打开我设备的闪光灯:

private func flashOn(device:AVCaptureDevice)
{
print("flashOn called");
do {

try device.lockForConfiguration()
// line below returns warning 'flashMode' was deprecated in iOS 10.0: Use AVCapturePhotoSettings.flashMode instead.
device.flashMode = AVCaptureDevice.FlashMode.auto
device.unlockForConfiguration()

} catch {

// handle error
print("flash on error");
}

}

将 device.flashMode 设置为 AVCaptureDevice.FlashMode.auto 会显示警告“'flashMode' 在 iOS 10.0 中已弃用:请改用 AVCapturePhotoSettings.flashMode。”。尽管它只是一个警告,但它在测试我的应用程序时不会启用闪光灯,所以我将该行更改为:

device.flashMode = AVCaptureDevice.FlashMode.auto

所以我把这条线设置成这样,就像它建议的那样:

AVCapturePhotoSettings.flashMode = AVCaptureDevice.FlashMode.auto

我收到错误消息“实例成员‘flashMode’不能用于类型‘AVCapturePhotoSettings’”

所以我不知道如何使用 Swift 4.0 在 Xcode 版本 9 中设置闪光灯。我在 Stack Overflow 中找到的所有答案都是针对以前版本的。

最佳答案

我也遇到了同样的问题。不幸的是,许多有用的方法在 iOS10 和 11 中被弃用了。以下是我设法解决它的方法:

AVCapturePhotoSettings 对象是唯一的,不能重复使用,因此每次使用该方法都需要获取新的设置:

/// the current flash mode
private var flashMode: AVCaptureDevice.FlashMode = .auto

/// Get settings
///
/// - Parameters:
/// - camera: the camera
/// - flashMode: the current flash mode
/// - Returns: AVCapturePhotoSettings
private func getSettings(camera: AVCaptureDevice, flashMode: AVCaptureDevice.FlashMode) -> AVCapturePhotoSettings {
let settings = AVCapturePhotoSettings()

if camera.hasFlash {
settings.flashMode = flashMode
}
return settings
}

如您所见,不需要 lockConfiguration。

然后在拍摄照片时简单地使用它:

 @IBAction func captureButtonPressed(_ sender: UIButton) {
let settings = getSettings(camera: camera, flashMode: flashMode)
photoOutput.capturePhoto(with: settings, delegate: self)
}

希望对您有所帮助。

关于ios - 如何在 Swift 4 中设置设备的闪光灯模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47273601/

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