我试图使用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相机中使用的相同闪光灯?
答案 0 :(得分:1)
任何时候你都想尝试使用sleep()
,自己打发并意识到你做错了。
你真的需要调查using animations。这使用了很好地优化(通过系统)时序,通过等待强制sleep()
完成来阻止主线程(用户界面和其他事物)。
你的情况有点复杂,因为我不相信UIScreen
的亮度是直接可动的。这意味着您需要创建custom animatable property(可能称之为" flashLevel"或其他内容),这反过来会更新UIScreen
的亮度以匹配。
你可能还应该注意用户的亮度等级首先,动画到最亮的秒,然后在"结束时动画回到用户的等级。达到最大亮度"阶段。我知道,如果一个应用程序搞砸了我的屏幕亮度并且没有按照原来的方式把它放回去,那么它会让我感到厌烦
我最好的建议是阅读我链接的文档,尽力使其正常运行,然后更新您的问题,以包含您尝试过的代码以及如果可以的话,哪些代码无效#&# 39;弄清楚。