【问题标题】:How to smoothly change screen brightness in Swift 3?如何在 Swift 3 中平滑更改屏幕亮度?
【发布时间】:2018-01-30 15:15:40
【问题描述】:

我是 iOS 应用程序开发的新手,我正在尝试更改屏幕亮度,但它发生得非常突然。有没有办法平滑地为屏幕亮度设置动画?

【问题讨论】:

标签: ios iphone swift


【解决方案1】:

不是计时器,而是一个 Swift 扩展:

  extension UIScreen {

    private static let step: CGFloat = 0.1

    static func animateBrightness(to value: CGFloat) {
        guard fabs(UIScreen.main.brightness - value) > step else { return }

        let delta = UIScreen.main.brightness > value ? -step : step

        DispatchQueue.main.asyncAfter(deadline: .now() + 0.01) {
            UIScreen.main.brightness += delta
            animateBrightness(to: value)
        }
    }
}

【讨论】:

  • 向系统类引入静态属性?它闻起来像糟糕的设计吗?
【解决方案2】:

我猜你可以像这样设置一个重复发生的计时器:

var timer = Timer.scheduledTimer(timeInterval: 0.05, target: self, selector: #selector(self.update), userInfo: nil, repeats: true)

并添加更新方法:

func update() {
    UIScreen.main.brightness = UIScreen.main.brightness - CGFloat(0.1)
    if UIScreen.main.brightness == CGFloat(0.5) { // or any brightness you want.
        timer.invalidate()
    }
}

只需调整计时器间隔并降低亮度,直到找到所需内容。

【讨论】:

    猜你喜欢
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-29
    相关资源
    最近更新 更多