这个思路来自于我的一个朋友。
代码如下:
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
/*
*切换主题颜色使用
*/
@property (nonatomic,assign) BOOL isNightMode;
@end
#import "UIColor+Theme.h"
#import "AppDelegate.h"
@implementation UIColor (Theme)
+ (UIColor *)navigationBarColor
{
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
if (appDelegate.isNightMode == NO)
{
return [UIColor magentaColor];
}
return [UIColor darkTextColor];
}
@end
- (IBAction)changThemeColor:(id)sender
{
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
UISwitch *swit = (UISwitch *)sender;
if ([swit isOn])
{
appDelegate.isNightMode = YES;
}
else
{
appDelegate.isNightMode = NO;
}
[self.navigationController.navigationBar setBarTintColor:[UIColor navigationBarColor]];
}
我们在AppDelegate中创建一个全局的BOOL
属性变量isNightMode
,然后创建一个UIColor的类目,在这里进行颜色切换管理。当我们改变isNightMode
的值时,自然也会改变对应颜色的值。