【发布时间】:2018-01-30 15:15:40
【问题描述】:
我是 iOS 应用程序开发的新手,我正在尝试更改屏幕亮度,但它发生得非常突然。有没有办法平滑地为屏幕亮度设置动画?
【问题讨论】:
-
你会如何改变它?你的应用程序中有一个滑块可以处理它吗?
我是 iOS 应用程序开发的新手,我正在尝试更改屏幕亮度,但它发生得非常突然。有没有办法平滑地为屏幕亮度设置动画?
【问题讨论】:
不是计时器,而是一个 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)
}
}
}
【讨论】:
我猜你可以像这样设置一个重复发生的计时器:
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()
}
}
只需调整计时器间隔并降低亮度,直到找到所需内容。
【讨论】: