这是我的简书第一篇。一直在想要不要把这个发出来,因为这个问题的解决方法开始是学习HJaycee - 简书的一篇文章iOS仿支付宝二维码页逐步调整屏幕亮度 - 简书。我只是在他的基础上多添加了一个方法而已,在这里发表出来,就当是记录一下这个知识点。
我添加了方法:快速恢复之前亮度的方法
+ (void)fastResumeBrightness{
if (!_queue) {
_queue = [[NSOperationQueue alloc] init];
_queue.maxConcurrentOperationCount = 1;
}
[_queue cancelAllOperations];
[_queue addOperationWithBlock:^{
[UIScreen mainScreen].brightness = _currentBrightness;
}];
}
然后去掉了
+ (void)initialize{
//系统通知:手机亮度改变时发送的通知
// [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(saveDefaultBrightness) name:UIScreenBrightnessDidChangeNotification object:nil];
// [self saveDefaultBrightness];
}
保存手机之前的亮度我是在进入二维码页面时保存,没有根据亮度的变化而实时保存。
//保存亮度
[JCBrightness saveDefaultBrightness];
二维码页面添加 程序变成激活状态 程序将失去激活状态 这两个通知
具体方法为:
#pragma mark --添加通知
-(void)addNSNotification{
// UIKIT_EXTERN NSString *const UIApplicationDidBecomeActiveNotification; //程序变成激活状态
// UIKIT_EXTERN NSString *const UIApplicationWillResignActiveNotification; //程序将失去激活状态
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(DidBecomeActive) name:UIApplicationDidBecomeActiveNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willResignActive) name:UIApplicationWillResignActiveNotification object:nil];
}
//成为激活状态,调高亮度
-(void)DidBecomeActive{
[JCBrightness graduallySetBrightness:0.8];
}
//失去激活状态,快速恢复之前的亮度
-(void)willResignActive{
[JCBrightness fastResumeBrightness];
}
加了这两个通知后,自动调节屏幕亮度就比较完美了。
下面为代码链接地址:GitHub - leon-zhangxb/brightnessGradientDemo: iOS仿支付宝二维码页面调节屏幕亮度