只是想知道是否可以通过淡入淡出效果更改屏幕亮度。可以使用UIScreen.mainScreen().brightness = CGFloat(1)
更改屏幕亮度,但只是立即将当前亮度更改为变量。
我想知道你是否可以设置亮度变化的动画。例如,当前亮度为0.2,我希望将其更改为0.8,使用淡入淡出效果,增量为0.1,直到达到0.8
这可以在swift 2.3中完成吗?
答案 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)