2016-11-26 71 views
0

想知道是否完全可以使用淡入淡出效果更改屏幕亮度。屏幕亮度可以使用UIScreen.mainScreen().brightness = CGFloat(1)進行更改,但只是立即將當前亮度更改爲變量。更改UIScreen亮度時添加動畫淡入效果(Swift)

我想知道您是否可以對亮度變化進行動畫處理。例如,當前亮度爲0.2,我想用0.1的漸變效果將其更改爲0.8,直到達到0.8爲止

這可以在swift 2.3中完成嗎?

+0

我不確定你是否upvote我的answer.but你接受的答案是一個不好的做法,使用計時器來實現動畫?考慮改變alpha值而不是屏幕亮度? – Joe

回答

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.1每0.4秒改變亮度。當它達到0.8或更多的值時,它停止。您可以通過使用timerInterval參數進行更漸進或立即的效果。

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)