iOS 控制屏幕亮度

一、目標(biāo)

支付寶相信大家都用過,其有一個功能,就是在進(jìn)入付款功能中,顯示二維碼時,屏幕亮度會逐漸增加,而在退出該界面時,屏幕亮度又會逐漸降低,現(xiàn)在我的現(xiàn)在做一個功能。

二、核心屬性

@available(iOS 5.0, *)
open var brightness: CGFloat // 0 .. 1.0, where 1.0 is maximum brightness. Only supported by main screen.

這句話能改變屏幕亮度,從iOS 5 開始就可以用了,其取值范圍在0.0~1.0之間,1.0是最亮。并且,這句話是全局有效,而不僅僅是設(shè)置當(dāng)前控制器的亮度,也就是說,如果你在某個控制器中改變了屏幕亮度,那么哪怕殺死應(yīng)用,手機屏幕仍是你設(shè)置的亮度,除非用戶手動調(diào)節(jié)亮度值。

三、 屏幕亮度漸變實現(xiàn)

import UIKit

class ViewController: UIViewController {

    /// 記錄進(jìn)入該控制器時的亮度,在返回時,改為初始亮度
    var brightness: CGFloat = 0
    /// 使用定時器,逐步改變屏幕亮度
    var timer: Timer?

    /// 在界面顯示時,逐漸加亮屏幕
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        brightness = UIScreen.main.brightness
        timer = Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: #selector(increaseBrightness), userInfo: nil, repeats: true)
    }
    
    /// 界面消失時,恢復(fù)屏幕初始亮度
    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        timer = Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: #selector(decreaseBrightness), userInfo: nil, repeats: true)
    }
    
    /// 增加屏幕亮度
    @objc private func increaseBrightness() {
        if UIScreen.main.brightness > 0.9 {
            timer?.invalidate()
            timer = nil
            return
        }
        UIScreen.main.brightness += 0.01
    }
    
    /// 降低屏幕亮度
    @objc private func decreaseBrightness() {
        if UIScreen.main.brightness <= brightness {
            timer?.invalidate()
            timer = nil
            return
        }
        UIScreen.main.brightness -= 0.01
    }
}

另外,屏幕的亮度調(diào)節(jié)只能在真機上看到效果,模擬器上看不到效果!
PS:

// 保存屏幕常亮
UIApplication.shared.isIdleTimerDisabled = true
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補...
    _Yfling閱讀 14,168評論 1 92
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,659評論 19 139
  • 原貼顯示器吧 ★顯示器各項參數(shù)★ ★分析科普★ 在計算機硬件上顯示器算是比較容易受輕視且關(guān)注度不高的硬件,很多人對...
    卡皮閱讀 6,018評論 2 11
  • 以前我從來不相信緣分這兩個字,但是現(xiàn)在,我信了。 去年的八月二十一號,我和我的小霍先生第一次見面,是無意間的和閨蜜...
    一顆偶然的泡芙閱讀 979評論 2 0
  • 圖/心_如簡 小時候,鄉(xiāng)愁是一枚小小的郵票 我在這頭 母親在那頭 長大后,鄉(xiāng)愁是一張窄窄的船票 我在這頭 新娘在那...
    如簡小屋閱讀 250評論 8 8

友情鏈接更多精彩內(nèi)容