簡易的主題切換功能

weixin_33860722發表於2017-05-27

這個思路來自於我的一個朋友。
程式碼如下:

#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的值時,自然也會改變對應顏色的值。

相關文章