ios - 如何使用iPhone屏幕创建前置摄像头 "flash"效果

标签 ios iphone swift

我正在尝试使用 iPhone 6s 前置摄像头的闪光灯。我在网上和 Apple Docs 上进行了搜索,但没有找到有关如何使用它的有用说明。我目前正在制作定制的前置闪光灯摄像头,但我正在尝试使用 Apple 相机使用的官方闪光灯摄像头。

这是我的自定义闪光灯代码:(它基本上是一个显示一秒钟的白色 UIView,我将手机的亮度设置为 1)

var flashview: UIView!

在viewDidLoad中

    flashview = UIView(frame: CGRectMake(UIScreen.mainScreen().bounds.width/2, UIScreen.mainScreen().bounds.height/2, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height))
    flashview.center = CGPointMake(self.view.bounds.width/2, self.view.bounds.height/2)
    flashview.backgroundColor = UIColor.whiteColor()
    flashview.alpha = 0.0
    flashview.layer.zPosition = 100
    self.view.addSubview(flashview) 

拍照时

UIScreen.mainScreen().brightness = CGFloat(1.0)
self.flashview.alpha = 1.0
sleep(1)
self.flashview.alpha = 0.9
sleep(1)
self.flashview.alpha = 0.0
UIScreen.mainScreen().brightness = CGFloat(0.5)

是否有任何可能的方法来使用与官方 Apple 相机中使用的闪光灯相同的闪光灯?

最佳答案

每当您想使用 sleep() 时,打自己一巴掌,意识到自己做错了™。

你真的需要看看using animations .这使用了很好的(由系统)优化的时间,不会通过等待强制 sleep() 完成来阻塞主线程(除其他外的用户界面)。

你的情况有点复杂,因为我不相信 UIScreen 的亮度可以直接设置动画。这意味着您需要创建一个 custom animatable property (也许称它为“flashLevel”或其他名称),这反过来会更新 UIScreen 的亮度以匹配。

您可能还应该首先注意用户的亮度级别,设置动画到最亮的第二个,然后在“达到最大亮度”阶段结束时设置动画回到用户的级别。我知道如果某个应用程序破坏了我的屏幕亮度并且没有将其恢复到原来的状态,这会让很烦...

我最好的建议是阅读我链接到的文档,尽最大努力让它工作,然后更新你的问题以包括你已经尝试过的代码以及如果你无法弄清楚什么是行不通的。

关于ios - 如何使用iPhone屏幕创建前置摄像头 "flash"效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34534060/

相关文章:

ios - 为什么在格式化数字时NSString类会出现不一致的舍入?

iphone - 当有多个警报 View 时检测按钮被按下

iphone - 我如何检查 NSUrl 是否是有效的图像 url?

swift - Core Data 代码生成器如何决定是否将属性设为可选?

ios - 来自 UIImagePicker 的图像的 NSURL

ios - 出现键盘时以编程方式更新约束

ios - 如何在搜索栏上设置更改占位符颜色?

ios - 这个 objective-c 代码在 swift 中的等价物是什么?

ios - Swift:NSTimer 内存泄漏

iphone - 位置管理器错误 : (KCLErrorDomain error 0)