【发布时间】:2012-02-14 18:11:43
【问题描述】:
如何使用 iPhone SDK 以编程方式更改屏幕亮度?
【问题讨论】:
-
鉴于这是官方SDK的一部分,我建议你检查你的来源。 developer.apple.com/library/IOs/#documentation/UIKit/Reference/…
标签: iphone objective-c ios cocoa-touch ios5
如何使用 iPhone SDK 以编程方式更改屏幕亮度?
【问题讨论】:
标签: iphone objective-c ios cocoa-touch ios5
[[UIScreen mainScreen] setBrightness: yourvalue];
需要 iOS 5.0 或更高版本。 yourvalue 是介于 0.0 和 1.0 之间的浮点数。
【讨论】:
UIScreen.mainScreen().brightness 存储原始亮度,然后在以后使用此值恢复亮度。
[[UIScreen mainScreen] setBrightness: 0.6f]; 添加到 viewDidAppear 并没有发生任何事情。
更新:对于 Swift 3
UIScreen.main.brightness = YourBrightnessValue
这是执行此操作的快速答案
UIScreen.mainScreen().brightness = YourBrightnessValue
YourBrightnessValue 是 0.0 和 1.0 之间的浮点数
【讨论】:
我在 viewDidLoad/viewWillDisappear 中更改屏幕亮度时遇到了一些问题,因此我创建了一个单例类来处理所有操作。我就是这样做的:
import Foundation
import UIKit
final class ScreenBrightnessHelper {
private var timer: Timer?
private var brightness: CGFloat?
private var isBrighteningScreen = false
private var isDarkeningScreen = false
private init() { }
static let shared = ScreenBrightnessHelper()
func brightenDisplay() {
resetTimer()
isBrighteningScreen = true
if #available(iOS 10.0, *), timer == nil {
brightness = UIScreen.main.brightness
timer = Timer.scheduledTimer(withTimeInterval: 0.01, repeats: true) { (timer) in
UIScreen.main.brightness = UIScreen.main.brightness + 0.01
if UIScreen.main.brightness > 0.99 || !self.isBrighteningScreen {
self.resetTimer()
}
}
}
timer?.fire()
}
func darkenDisplay() {
resetTimer()
isDarkeningScreen = true
guard let brightness = brightness else {
return
}
if #available(iOS 10.0, *), timer == nil {
timer = Timer.scheduledTimer(withTimeInterval: 0.01, repeats: true) { (timer) in
UIScreen.main.brightness = UIScreen.main.brightness - 0.01
if UIScreen.main.brightness < brightness || !self.isDarkeningScreen {
self.resetTimer()
self.brightness = nil
}
}
timer?.fire()
}
}
private func resetTimer() {
timer?.invalidate()
timer = nil
isBrighteningScreen = false
isDarkeningScreen = false
}
}
【讨论】: