這是我的簡書第一篇。一直在想要不要把這個發(fā)出來,因為這個問題的解決方法開始是學(xué)習(xí)HJaycee - 簡書的一篇文章iOS仿支付寶二維碼頁逐步調(diào)整屏幕亮度 - 簡書。我只是在他的基礎(chǔ)上多添加了一個方法而已,在這里發(fā)表出來,就當(dāng)是記錄一下這個知識點。
我添加了方法:快速恢復(fù)之前亮度的方法
+ (void)fastResumeBrightness{
? ? if (!_queue) {
? ? ? ? _queue = [[NSOperationQueue alloc] init];
? ? ? ? _queue.maxConcurrentOperationCount = 1;
? ? }
? ? [_queue cancelAllOperations];
? ? [_queue addOperationWithBlock:^{
? ? ? ? [UIScreen mainScreen].brightness = _currentBrightness;
? ? }];
}
然后去掉了
+ (void)initialize{
? ? //系統(tǒng)通知:手機(jī)亮度改變時發(fā)送的通知
//? ? [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(saveDefaultBrightness) name:UIScreenBrightnessDidChangeNotification object:nil];
//? ? [self saveDefaultBrightness];
}
保存手機(jī)之前的亮度我是在進(jìn)入二維碼頁面時保存,沒有根據(jù)亮度的變化而實時保存。
//保存亮度
[JCBrightness saveDefaultBrightness];?
二維碼頁面添加 程序變成激活狀態(tài) 程序?qū)⑹ゼせ顮顟B(tài) 這兩個通知
具體方法為:
#pragma mark --添加通知
-(void)addNSNotification{
//? ? UIKIT_EXTERN NSString *const UIApplicationDidBecomeActiveNotification;? ? //程序變成激活狀態(tài)
//? ? UIKIT_EXTERN NSString *const UIApplicationWillResignActiveNotification;? ? //程序?qū)⑹ゼせ顮顟B(tài)
? ? [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(DidBecomeActive) name:UIApplicationDidBecomeActiveNotification object:nil];
? ? [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willResignActive) name:UIApplicationWillResignActiveNotification object:nil];
}
//成為激活狀態(tài),調(diào)高亮度
-(void)DidBecomeActive{
? ? [JCBrightness graduallySetBrightness:0.8];
}
//失去激活狀態(tài),快速恢復(fù)之前的亮度
-(void)willResignActive{
? ? [JCBrightness fastResumeBrightness];
}
加了這兩個通知后,自動調(diào)節(jié)屏幕亮度就比較完美了。
下面為代碼鏈接地址:GitHub - leon-zhangxb/brightnessGradientDemo: iOS仿支付寶二維碼頁面調(diào)節(jié)屏幕亮度