【问题标题】:How can we programmatically change the brightness of the iPhone screen?我们如何以编程方式改变 iPhone 屏幕的亮度?
【发布时间】:2012-02-14 18:11:43
【问题描述】:

如何使用 iPhone SDK 以编程方式更改屏幕亮度?

【问题讨论】:

标签: iphone objective-c ios cocoa-touch ios5


【解决方案1】:
[[UIScreen mainScreen] setBrightness: yourvalue];

需要 iOS 5.0 或更高版本。 yourvalue 是介于 0.0 和 1.0 之间的浮点数。

【讨论】:

  • 很高兴我能帮上忙。如果它是您正在寻找的,您可以接受答案:)
  • 这难道不会让你离开 App Store 吗?
  • 这是一个完全合法的 API 调用。我看不出它应该有任何问题的原因。
  • @Robse 您可以先使用UIScreen.mainScreen().brightness 存储原始亮度,然后在以后使用此值恢复亮度。
  • 我将此行 [[UIScreen mainScreen] setBrightness: 0.6f]; 添加到 viewDidAppear 并没有发生任何事情。
【解决方案2】:

更新:对于 Swift 3

UIScreen.main.brightness = YourBrightnessValue

这是执行此操作的快速答案

UIScreen.mainScreen().brightness = YourBrightnessValue

YourBrightnessValue 是 0.01.0 之间的浮点数

【讨论】:

  • 请求当前亮度:let brillo : CGFloat = UIScreen.main.brightness
【解决方案3】:

我在 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
    }
}

【讨论】:

    猜你喜欢
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多