iOS 控制屏幕亮度

一、目标

支付宝相信大家都用过,其有一个功能,就是在进入付款功能中,显示二维码时,屏幕亮度会逐渐增加,而在退出该界面时,屏幕亮度又会逐渐降低,现在我的现在做一个功能。

二、核心属性

@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是最亮。并且,这句话是全局有效,而不仅仅是设置当前控制器的亮度,也就是说,如果你在某个控制器中改变了屏幕亮度,那么哪怕杀死应用,手机屏幕仍是你设置的亮度,除非用户手动调节亮度值。

三、 屏幕亮度渐变实现

import UIKit

class ViewController: UIViewController {

    /// 记录进入该控制器时的亮度,在返回时,改为初始亮度
    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)
    }
    
    /// 界面消失时,恢复屏幕初始亮度
    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
    }
}

另外,屏幕的亮度调节只能在真机上看到效果,模拟器上看不到效果!
PS:

// 保存屏幕常亮
UIApplication.shared.isIdleTimerDisabled = true
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,687评论 1 92
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,713评论 19 139
  • 原贴显示器吧 ★显示器各项参数★ ★分析科普★ 在计算机硬件上显示器算是比较容易受轻视且关注度不高的硬件,很多人对...
    卡皮阅读 10,989评论 2 11
  • 以前我从来不相信缘分这两个字,但是现在,我信了。 去年的八月二十一号,我和我的小霍先生第一次见面,是无意间的和闺蜜...
    一颗偶然的泡芙阅读 4,430评论 2 0
  • 图/心_如简 小时候,乡愁是一枚小小的邮票 我在这头 母亲在那头 长大后,乡愁是一张窄窄的船票 我在这头 新娘在那...
    如简小屋阅读 1,540评论 8 8