想知道是否完全可以使用淡入淡出效果更改屏幕亮度。屏幕亮度可以使用UIScreen.mainScreen().brightness = CGFloat(1)
进行更改,但只是立即将当前亮度更改为变量。更改UIScreen亮度时添加动画淡入效果(Swift)
我想知道您是否可以对亮度变化进行动画处理。例如,当前亮度为0.2,我想用0.1的渐变效果将其更改为0.8,直到达到0.8为止
这可以在swift 2.3中完成吗?
想知道是否完全可以使用淡入淡出效果更改屏幕亮度。屏幕亮度可以使用UIScreen.mainScreen().brightness = CGFloat(1)
进行更改,但只是立即将当前亮度更改为变量。更改UIScreen亮度时添加动画淡入效果(Swift)
我想知道您是否可以对亮度变化进行动画处理。例如,当前亮度为0.2,我想用0.1的渐变效果将其更改为0.8,直到达到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.1每0.4秒改变亮度。当它达到0.8或更多的值时,它停止。您可以通过使用timerInterval参数进行更渐进或立即的效果。
注:我建议你改变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)
我不确定你是否upvote我的answer.but你接受的答案是一个不好的做法,使用计时器来实现动画?考虑改变alpha值而不是屏幕亮度? – Joe