夜间模式:利用继承与NSUserDefaults1.创建基类,负责夜间模式的转换2.所有的类都继承于基类,基类的模式改变了,所有子类的模式也改变了3.夜间模式触发的按钮发送通知4.利用NSUserDefault把模式保存到本地
/*基类.h***/#import”BaseViewController.h”
@interfaceBaseViewController()
@end
@implementationBaseViewController
- (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view.
//父亲默认颜色
self.view.backgroundColor= [UIColorredColor];
self.navigationController.navigationBar.barTintColor= [UIColorgreenColor];
//注册通知
[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(changeColor:)name:@”changeColor”object:nil];
//判断模式
NSStringstr = [[NSUserDefaultsstandardUserDefaults]objectForKey:@”night”];
if([strisEqualToString:@”yes”]) {
self.view.backgroundColor= [UIColorlightGrayColor];
self.navigationController.navigationBar.barTintColor= [UIColorblackColor];
}
}
//接受通知触发的方法
-(void)changeColor:(NSNotification)notification
{
NSString*str = [[NSUserDefaultsstandardUserDefaults]objectForKey:@”night”];
if([strisEqualToString:@”yes”]) {
self.view.backgroundColor= [UIColorlightGrayColor];
self.navigationController.navigationBar.barTintColor= [UIColorblackColor];
}else
{
self.view.backgroundColor= [UIColorredColor];
self.navigationController.navigationBar.barTintColor= [UIColorgreenColor];
}
}
(void)didReceiveMemoryWarning {
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.}@end/*基类.h***/
/*夜间模式触发的按钮***/ UIButton*button = [UIButtonbuttonWithType:UIButtonTypeCustom];
[self.viewaddSubview:button];
button.frame=CGRectMake(100,100,200,40);
button.backgroundColor= [UIColorblackColor];[buttonaddTarget:selfaction:@selector(buttonAction)forControlEvents:UIControlEventTouchUpInside];
}
-(void)buttonAction
{
NSString*str = [[NSUserDefaultsstandardUserDefaults]objectForKey:@”night”];
if([strisEqualToString:@”yes”]) {
[[NSUserDefaultsstandardUserDefaults]setObject:@”no”forKey:@”night”];
[[NSNotificationCenterdefaultCenter]postNotificationName:@"changeColor"object:@"no"];
}else
{
[[NSUserDefaultsstandardUserDefaults]setObject:@"yes"forKey:@"night"];
[[NSNotificationCenterdefaultCenter]postNotificationName:@"changeColor"object:@"yes"];
}
}/*夜间模式触发的按钮***/