如今,多数爱啪啪都有一键换肤的功能,即便是称呼不一样,但是都做了同样的事情,实现了同样的效果。简单高效的方式就是使用通知,我们就来看一下使用通知是如何实现的~~~简单到爆炸!
首先:我们在工程中新建几个控制器,并为每个控制器设置不同的背景颜色。
我们在其中的一个设置页面,进行某一项操作以达到改变所有页面的背景颜色的目的。
- (IBAction)changeColor:(UIButton *)sender {
NSLog(@"一键修改背景颜色");
//通知中心发送通知消息
[[NSNotificationCenter defaultCenter]postNotificationName:@"change" object:nil userInfo:@{@"color":[UIColor lightGrayColor]}];
self.view.backgroundColor = [UIColor lightGrayColor];//设置设置页面自身的背景
}
通知的实现是一对多的关系,我们在设置页面里面发送了通知,相应的要是在别的页面注册通知,只有注册了通知之后,在接收的通知消息的时候就会做出相应的操作。于是,我们在其他各个页面注册通知,并实现其相应方法:
- (void)viewDidLoad {
[super viewDidLoad];
//注册消息
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(changeTheme:) name:@"change" object:nil];
}
-(void)changeTheme:(NSNotification *)sender{
self.view.backgroundColor = sender.userInfo[@"color"];
}
其他所有页面的做法是一样的..
这个时候我们在设置页面所做操作之后,就会看到所有的页面背景颜色都改变了。
我们的例子只是设置背景颜色,其实利用通知进行别的项目设置也是类似的,咱们有兴趣都可以探讨···