【发布时间】:2017-11-13 21:10:25
【问题描述】:
我正在调用一个函数来尝试打开我设备的闪光灯:
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 中设置 flash。我在 Stack Overflow 中找到的所有答案都是针对以前版本的。
【问题讨论】:
-
如果您想制作“手电筒”(英国为“手电筒”),请使用
torchMode。如果您将相机闪光灯设置为拍照,请根据需要使用AVCapturePhotoOutput和AVCapturePhotoSettings设置,而不是使用AVCaptureDevice。 -
这就是我的想法,但我得到“'AVCapturePhotoSettings' 类型的值没有成员'AVCapturePhotoOutput'”。我在拍照时用它来关闭闪光灯。
-
从
AVCapturePhotoOutput的文档开始。 -
我在我的应用程序中经常使用 AVCapturePhotoSettings,但我没有在文档中找到关于如何在拍照时启用闪光灯的线索。 developer.apple.com/documentation/avfoundation/…它实际上在哪里显示了启用它的示例?
-
我试过settings.flashMode = AVCaptureDevice.FlashMode.on没有错误,但是没有flash。