更改UIScreen亮度时添加动画淡入淡出效果(Swift)

时间:2016-11-26 06:53:09

标签: swift xcode brightness cgfloat uiscreen

只是想知道是否可以通过淡入淡出效果更改屏幕亮度。可以使用UIScreen.mainScreen().brightness = CGFloat(1)更改屏幕亮度,但只是立即将当前亮度更改为变量。

我想知道你是否可以设置亮度变化的动画。例如,当前亮度为0.2,我希望将其更改为0.8,使用淡入淡出效果,增量为0.1,直到达到0.8

这可以在swift 2.3中完成吗?

2 个答案:

答案 0 :(得分:1)

UIView和CALayers有现成的动画方法。但在您的情况下,您希望为UIScreen属性设置动画,因此您必须使用计时器手动执行此操作,以便在一段时间内逐渐将亮度从0.1更改为0.8。

    var timer = Timer.scheduledTimer(timeInterval: 0.4, target: self, selector: #selector(self.update), userInfo: nil, repeats: true)

    func update() {
        if (UI.mainScreen().brightness >= 0.8) {
           Timer.invalidate(timer)
        }
        else {
        UIScreen.mainScreen().brightness += 0.1
        }
    }

这将每0.4秒将亮度改变0.1。当它达到0.8或更高的值时,它会停止。您可以通过使用timerInterval参数来实现更渐进或即时的效果。

答案 1 :(得分:1)

注意:我建议您更改view alpha值,而不是使用屏幕亮度。

viewDidLoad内尝试这种简单的方法来完成动画。如果你仍然想使用亮度method.code,那就差不多了。

 self.view.alpha = 0.2 // UIScreen.mainScreen().brightness = 0.2
//animation duration value is changeable...
 UIView.animate(withDuration: 3, delay: 0, options: UIViewAnimationOptions.curveEaseInOut, animations:  {
 self.view.alpha = 0.8 // UIScreen.mainScreen().brightness = 0.8
 }, completion: nil)
相关问题