想知道是否完全可以使用淡入淡出效果更改屏幕亮度。屏幕亮度可以使用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