一、目標(biāo)
支付寶相信大家都用過(guò)绽快,其有一個(gè)功能芥丧,就是在進(jìn)入付款
功能中,顯示二維碼時(shí)坊罢,屏幕亮度會(huì)逐漸增加续担,而在退出該界面時(shí),屏幕亮度又會(huì)逐漸降低活孩,現(xiàn)在我的現(xiàn)在做一個(gè)功能物遇。
二、核心屬性
@available(iOS 5.0, *)
open var brightness: CGFloat // 0 .. 1.0, where 1.0 is maximum brightness. Only supported by main screen.
這句話能改變屏幕亮度憾儒,從iOS 5
開(kāi)始就可以用了询兴,其取值范圍在0.0~1.0之間,1.0是最亮起趾。并且诗舰,這句話是全局有效,而不僅僅是設(shè)置當(dāng)前控制器的亮度训裆,也就是說(shuō)眶根,如果你在某個(gè)控制器中改變了屏幕亮度,那么哪怕殺死應(yīng)用边琉,手機(jī)屏幕仍是你設(shè)置的亮度属百,除非用戶(hù)手動(dòng)調(diào)節(jié)亮度值。
三变姨、 屏幕亮度漸變實(shí)現(xiàn)
import UIKit
class ViewController: UIViewController {
/// 記錄進(jìn)入該控制器時(shí)的亮度族扰,在返回時(shí),改為初始亮度
var brightness: CGFloat = 0
/// 使用定時(shí)器定欧,逐步改變屏幕亮度
var timer: Timer?
/// 在界面顯示時(shí)别伏,逐漸加亮屏幕
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)
}
/// 界面消失時(shí),恢復(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é)只能在真機(jī)上看到效果,模擬器上看不到效果愧口!
PS:
// 保存屏幕常亮
UIApplication.shared.isIdleTimerDisabled = true