How to set screen brightness with fade animations?

后端 未结 7 1602
梦如初夏
梦如初夏 2021-01-02 11:32

Is it possible to animate the screen brightness change on iOS 5.1+? I am using [UIScreen mainScreen] setBrightness:(float)] but I think that the abrupt change i

7条回答
  •  感动是毒
    2021-01-02 12:26

    Swift 5

    import Foundation
    
    extension UIScreen {
    
        public func setBrightness(to value: CGFloat, duration: TimeInterval = 0.3, ticksPerSecond: Double = 120) {
            let startingBrightness = UIScreen.main.brightness
            let delta = value - startingBrightness
            let totalTicks = Int(ticksPerSecond * duration)
            let changePerTick = delta / CGFloat(totalTicks)
            let delayBetweenTicks = 1 / ticksPerSecond
    
            let time = DispatchTime.now()
    
            for i in 1...totalTicks {
                DispatchQueue.main.asyncAfter(deadline: time + delayBetweenTicks * Double(i)) {
                    UIScreen.main.brightness = max(min(startingBrightness + (changePerTick * CGFloat(i)),1),0)
                }
            }
    
        }
    }
    

提交回复
热议问题