登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

EATheme/主题切换/夜间模式

[复制链接]
来自: Eiwodetianna 分类: iOS精品源码 上传时间: 2016-5-28 00:03:21
Tag:EATheme 主题切换 夜间模式 主题 Theme

项目介绍:

EATheme/主题切换/夜间模式

安装方式

将demo中的EATheme文件夹直接引入到你的工程。
在项目中引入主头文件

        #import "EATheme.h"


在EAThemesConfiguration.h中自定义主题的常量字符串作为应用程序每种主题的identifier,范例:

[Objective-C] 查看源文件 复制代码
        // 这里设置了5种主题的标识
        static NSString *const EAThemeNormal = @"EAThemeNormal";
        static NSString *const EAThemeBlack = @"EAThemeBlack";
        static NSString *const EAThemeRed = @"EAThemeRed";
        static NSString *const EAThemeOrange = @"EAThemeOrange";
        static NSString *const EAThemeBlue = @"EAThemeBlue";


-application: didFinishLaunchingWithOptions:方法中配置应用程序默认主题,即正常状态下的主题:

[Objective-C] 查看源文件 复制代码
        // 必须配置正常状态下的主题标识
    [EAThemeManager shareManager].normalThemeIdentifier = EAThemeNormal;


在需要设置夜间模式的控件调用UIView类目中的设置方法,在Block回调中根据主题的identifier设置该视图的对应状态:

[Objective-C] 查看源文件 复制代码
        UITabBarController *rootViewController = (UITabBarController *)self.window.rootViewController;

    NSDictionary *tabBarColorDic = @{EAThemeNormal : [UIColor whiteColor], EAThemeBlack : [UIColor blackColor], EAThemeRed : [UIColor redColor], EAThemeOrange : [UIColor orangeColor], EAThemeBlue : [UIColor blueColor]};

    [rootViewController.tabBar ea_setThemeContents:^(UIView *currentView, NSString *currentThemeIdentifier) {
        UITabBar *bar = (UITabBar *)currentView;
        bar.barTintColor = tabBarColorDic[currentThemeIdentifier];
    }];



可通过EAThemeManager单例的currentThemeIdentifier属性随时获取当前的主题标识:

   
[Objective-C] 查看源文件 复制代码
     [[EAThemeManager shareManager] currentThemeIdentifier];


通过主题标识启动某个主题:

[Objective-C] 查看源文件 复制代码
       // 开启黑色主题
        [[EAThemeManager shareManager] displayThemeContentsWithThemeIdentifier:EAThemeBlack]; 

        
可使用通知中心自定义监听改变主题事件:

[Objective-C] 查看源文件 复制代码
        FOUNDATION_EXPORT NSString *const kEAChangeThemeNotification;

        
案例:

[Objective-C] 查看源文件 复制代码
        - (void)viewDidLoad {
            [super viewDidLoad];
            // Do any additional setup after loading the view.

            [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(themeDidDisplay) name:kEAChangeThemeNotification object:nil];    

        }

        - (void)themeDidDisplay {
            NSLog(@"current theme is %@!", [EAThemeManager shareManager].currentThemeIdentifier);
        }

        
注:Block内存问题:  
在封装时已尽量让使用者避免内存的问题,如果只是对当前的view设置背景颜色,可以直接使用Block回调中的参数currentView,不会产生内存问题,更复杂的情况,EATheme已借引ReactiveCocoa中的内存管理的宏,方便大家使用(个人觉得这个宏真心好用)例如:
        
[Objective-C] 查看源文件 复制代码
    @ea_weakify(self);
    [self.tableView ea_setThemeContents:^(UIView *currentView, NSString *currentThemeIdentifier) {
        @ea_strongify(self);
        currentView.backgroundColor = self.view.backgroundColor;
    }];

相关源码推荐:

我来说两句
*滑动验证:
所有评论(8)
王颖博 2016-5-30 13:45:54
正需要啊,感谢楼主无私分享!
回复
王颖博 2016-5-30 13:46:41
感谢分享,Code4App有你更精彩
回复
wutongxue 2016-5-31 09:02:01
很给力,Code4App有你更精彩!
回复
末日孤舰 2016-5-31 21:14:30
感谢分享,Code4App有你更精彩
回复
陈叔随手拍 2016-6-18 14:26:41
这个也不错
回复
samzp 2016-6-20 19:27:39
很给力,Code4App有你更精彩!
回复
KennyHito 2016-8-16 17:34:36
有没有github下载地址?
回复
天机否 2016-10-25 14:52:35
dsfasdffsdfsdfsdfsdfdsfdsaf虽不明,但觉厉!
回复
970 3 0
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,742864542

如何获得代码达人称号?

代码贡献英雄榜
用户名 下载数
通过邮件订阅最新 Code4App 信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表