我们如何通过编程来改变iPhone屏幕的亮度?

23

如何使用iPhone SDK编程来实现屏幕亮度的自动调节?


1
既然那是官方 SDK 的一部分,我建议您检查您的资源。http://developer.apple.com/library/IOs/#documentation/UIKit/Reference/UIScreen_Class/Reference/UIScreen.html - Peter Sarnowski
3个回答

54
[[UIScreen mainScreen] setBrightness: yourvalue];

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


很高兴我能帮到您。如果我的回答符合您的期望,您可以接受它 :) - Peter Sarnowski
这样做会不会让你被App Store踢出去? - Fernando Cervantes
这是一个完全合法的API调用。我看不出为什么会有任何问题。 - Peter Sarnowski
1
@Robse,您可以首先使用UIScreen.mainScreen().brightness存储原始亮度值,然后在以后的某个阶段使用该值来恢复亮度。 - chengsam
我在 viewDidAppear 中添加了这行代码 [[UIScreen mainScreen] setBrightness: 0.6f];,但是没有任何反应。 - Jared Chu

14

更新: 适用于Swift 3

UIScreen.main.brightness = YourBrightnessValue

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

UIScreen.mainScreen().brightness = YourBrightnessValue

YourBrightnessValue是一个浮点数,范围在0.01.0之间。


1
请求当前亮度:let brillo: CGFloat = UIScreen.main.brightness - oscar castellon

2

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接