IOS简单实现夜间模式(OC和Swift)

2018-11-13  本文已影响0人  Hahn_z

Demo:https://gitee.com/HanZhiLi/ios_night_mode

效果图

1.OC简单实现

1.创建一个theme的NSObject(设置全句需要调用的颜色,单例)

2.分别创建UIView,UITabBar,UINavigationBar,UILabel分类(category),如果有其他控价需要可以创建,因为思路是一样,所以只展示UIView

2.1 主要是用NSNotificationCenter来监听修改全局的

.h

.m

indexViewController.m设置

1.- (void)viewDidLoad {

[super viewDidLoad];

[self.label themeTextType:0];

}

2.- (IBAction)switch:(UISwitch*)sender {

if(sender.on){

            [theme shareTheme].appColor = 1;             [[NSNotificationCenter defaultCenter] postNotificationName:@"changeColor" object:nil];

}else{

            [theme shareTheme].appColor = 0;             [[NSNotificationCenter defaultCenter] postNotificationName:@"changeColor" object:nil];

}

}

2.swift实现

1.swift和OC的思路差不多都是用NSNotificationCenter来监听修改全局的,只不过语法差别比较大

2.说一下语法的差别,详情看demo:https://gitee.com/HanZhiLi/ios_night_mode

set get

1.extension就是themeUIView私有方法 相当于OC里面的Category

2.#selector是调用私有方法,私有方法必须是@objc

3.     在Swift中,我们用var来定义变量,但Swfit中并不会自动给变量赋初始值。 所以如果使用未赋值的变量就会报错。              "?”表示可选类型(Optionals) 就是将已存在的某种类型(结构体、枚举、类)定义为可选类型,表示该“新”类型的值可以为空nil              “!”表示告诉系统,“我肯定这个可选属性有值,强制取出来用”(强制解包),但是,如果这个可选类型属性当时的值为nil,那么会crash

上一篇下一篇

猜你喜欢

热点阅读