admin管理员组

文章数量:1516870

最近希望给自己的APP中加入夜间模式这一选项,经过学习使用单例模式实现了day or night的切换,很简单的代码,欢迎大家学习。

1、(1)创建单例,继承NSObject

@interface LXChangeDayAndNight : NSObject

// 创建 Bool 类型的 Style 来获得是否是夜间模式状态

@property ( nonatomic , assign ) BOOL style;


+ ( LXChangeDayAndNight *)changeDayAndNight;

@end

(2)初始化单例

+ ( LXChangeDayAndNight *)changeDayAndNight

{

static LXChangeDayAndNight *change = nil ;

static dispatch_once_t onceToken;

dispatch_once (&onceToken, ^{

change = [[ self alloc ] init ];

});

return change;

}

// 创建一个 Switch 控件,切换白天和夜间模式

UISwitch *dayOrNightSwitch = [[ UISwitch alloc ] initWithFrame : CGRectMake ( 100 , 100 , 100 , 50 )];

self . dayOrNightSwitch = dayOrNightSwitch;

[dayOrNightSwitch addTarget : self action : @selector (judgeDayOrNight) forControlEvents : UIControlEventTouchUpInside ];

[ self . view addSubview :dayOrNightSwitch];

- ( void )judgeDayOrNight

{

LXChangeDayAndNight *change = [ LXChangeDayAndNight changeDayAndNight ];

if ( self . dayOrNightSwitch . on ) {

//到这一行,单例change的style属性被赋值,其他控制器可以直接从单例中取值

change. style = YES ;

self . view . backgroundColor = [ UIColor blackColor ];

NSLog ( @"%d" ,change. style );

} else {

change. style = NO ;

self . view . backgroundColor = [ UIColor whiteColor ];

NSLog ( @"%d" ,change. style );

}

}

// 创建按钮 push 到另一个 controller

UIButton *btn = [ UIButton buttonWithType : UIButtonTypeCustom ];

btn. backgroundColor = [ UIColor purpleColor ];

btn. frame = CGRectMake ( 100 , 300 , 100 , 100 );

//push 操作

[btn addTarget : self action : @selector (push) forControlEvents : UIControlEventTouchUpInside ];

[ self . view addSubview :btn];

- ( void )viewDidLoad {

[ super viewDidLoad ];

self . view . backgroundColor = [ UIColor whiteColor ];

// 因为在上面的控制器中已经创建了单例对象,所以在 second 控制器中再次调用这个单例的时候会直接 return change 的状态

LXChangeDayAndNight *change = [ LXChangeDayAndNight changeDayAndNight ];

self . style = change. style ;

if ( self . style ) {

self . view . backgroundColor = [ UIColor blackColor ];

} else {

self . view . backgroundColor = [ UIColor whiteColor ];

}

}

代码比较简单,有不懂得地方可以咨询我。通过学习深知自己对于单例的理解还远远不够,今后的学习中还要继续努力、


本文标签: 如何在视功能编程