1、真对我们的项目来说 夜间模式是后来项目完工的时候增加的需求,
所以后来直接用这种方式,简单粗暴,直接改window.颜色,其他的设置你们自行增减。
代码如下,
- (void)clickSwitch:(UISwitch *)sender {
if (sender.isOn == YES) {
// 开启
self.superview.window.backgroundColor = [UIColor blackColor]; //设置背景色
self.superview.window.alpha = 0.4; //透明度
}else {
// 关闭
self.superview.window.backgroundColor = [UIColor whiteColor];
self.superview.window.alpha = 1.0;
}
}
2、如果是新的项目,建议做一下统一封装一个主题管理类处理,然后各种控件都做一个基类,在基类里面做主题的处理,改变主题的时候,你可以用delegate、通知任意你想要的形式去发送通知,
3、我看网上有个很火的demo在gitHub上面,九千多star,忘了叫啥名字了,看了一遍没弄懂他们的套路,毕竟是大牛写的,还有利用runtime的,总之有能力的还是可以做的很完美的。