iOS 10:UIImagePickerViewController 无法设置 Flash 模式

Posted

技术标签:

【中文标题】iOS 10:UIImagePickerViewController 无法设置 Flash 模式【英文标题】:iOS 10: UIImagePickerViewController Can Not Set Flash Mode 【发布时间】:2017-04-12 00:45:51 【问题描述】:

我正在为我的UIImagePickerViewController 创建自定义控件。我将默认闪光灯设置设置为.off,我想在打开和关闭之间切换。

但我在将UIImagePickerControllerCameraFlashMode 从开启切换到关闭时遇到了很多麻烦。这看起来应该是一件很容易设置的事情。但是我一直在尝试,我无法通过以下方式更改闪光灯模式,它只是停留在.off 模式。

func didTapFlashButton() -> Bool 
    if let picker = mediaPicker 
        if picker.cameraFlashMode == .on || picker.cameraFlashMode == .auto 
            picker.cameraFlashMode = UIImagePickerControllerCameraFlashMode.off
            return false
        
        else 
            picker.cameraFlashMode = UIImagePickerControllerCameraFlashMode.on
            return true
        
    
    return false

为什么这不会更新我的UIImagePickerController 上的闪存模式?


编辑(回复评论)

是的,我检查了代码是否执行并且它总是执行else 块以将其设置为.on。所以UIImagePickerController 正确地确认了我设置的默认闪光模式是.false(通过打印语句验证)。

但是,每当我点击按钮将闪光灯模式更改为.on 时,闪光灯都无法正常工作。这意味着它从未更新UIImagePickerController 上的闪存模式。

我不知道为什么这不起作用,除了我正在做的事情之外,我找不到任何其他方法来设置闪光模式。

【问题讨论】:

您是否检查过您的代码是否实际执行? mediaPicker 是否包含正确的值? 【参考方案1】:

这个真的让我觉得有点傻。发布此问题后不久,我意识到我正在测试的设备没有闪存功能。如果您使用闪存模式,您应该首先询问UIImagePickerController 类设备是否能够首先使用闪存。 Documentation.

【讨论】:

以上是关于iOS 10:UIImagePickerViewController 无法设置 Flash 模式的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发 如何适配iOS10

iOS - 如何适配iOS10(插曲)

iOS 8、iOS 9、iOS 10 和 iOS 11 上的 UITabBar 的高度是多少?

iOS:Xcode8以下真机测试iOS10.0和iOS10.1配置包

iOS10适配相关

iOS 9 和 iOS 10 CoreData 同时