夜间模式

夜间模式:利用继承与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"];
}

}/*夜间模式触发的按钮***/

文章目录
|