简易的主题切换功能

这个思路来自于我的一个朋友。
代码如下:

#import 

@interface AppDelegate : UIResponder 

@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的值时,自然也会改变对应颜色的值。

你可能感兴趣的:(简易的主题切换功能)