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

Adding an animation fade effect when the UIScreen Brightness is changed (Swift)

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

我想知道您是否可以为亮度变化设置动画。比如现在的亮度是0.2,我想把它改成0.8,渐变效果,增量为0.1,直到达到0.8

这可以在 swift 2.3 中完成吗?

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 参数来产生更渐进或更直接的效果。

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

在您的 viewDidLoad 中尝试这种简单的方法来实现 animation.If 您仍然想要使用亮度 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)