TKThemeConfig 0.1.2

TKThemeConfig 0.1.2

Tkoul 维护。



  • Tkoul

TKThemeConfig

CI Status Version License Platform

介绍

ios暗黑模式,多主题多皮肤设计,用于解决在ios上实现可跟随系统主题变更,也可不跟随实现自定义主题模式设计。本sdk可以支持任意多个主题。开发习惯上极度契合ios开发习惯,对于复杂的主题设置类,均可使用对象的tkThemeChangeBlock进行回调设置变更。优势:1.代码无侵入,轻量级SDK。上手简单。完美解决多任务后台主题即时变更,屏幕快照变更主题。2.全局控制,效率极高。用hashmap的形式管理block指针对象,轻量。3.一切OC对象皆tkThemeChangeBlock主题回调,根据主题的目前的索引变更主题。4.常用的UIKit的组件,赋予主题属性,主题方法等。直接设置主题颜色、图片数组即可。完全契合系统设置属性,方法习惯。5.设计原理完美,弱引用的形式回调,不会对项目产生内存泄漏,内存占用不释放问题。UIKit-View层即用即注册,跟随对象释放即销毁。主题回调block即用即注册,跟随对象释放即销毁。

PS: 欢迎交流 一起提升!邮箱[email protected]

移动显示样式

点击图片,跳转到视频链接(ps:上传的视频到免费网站,有十几秒广告)😔 😌 😔),看看效果吧: 如果图片裂开了,因为官网raw.GitHub的ip又变了,在电脑上添加host即可==》 199.232.28.133 raw.githubusercontent.com

Watch the video

如何开始

在使用到的地方 #import <TKThemeConfig/TKThemeConfig.h> 在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法初始化

            - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
            {
                //程序加载完毕 在其它组件含有UI元素前,优先设置主题 ,因为主题作用全局的UI
                //可以设置YES 也可设置NO  根据自己的项目自行选择
                [self changeThemeCofingFllowSystem:YES];
                return YES;
            }
            #pragma mark -- 程序加载完毕 在其它组件含有UI元素前,优先设置主题 ,因为主题作用全局的UI
            - (void)changeThemeCofingFllowSystem:(BOOL)fllowSystemTheme{
                if (fllowSystemTheme) {
                    //followSystemTheme 一旦设置YES themeIndex便失去作用 因为跟随系统变更。注释见TKThemeManager.h
                    [TKThemeManager config].followSystemTheme=YES;
                }else{
                    //followSystemTheme 一旦设置NO themeIndex起作用.注释见TKThemeManager.h
                    [TKThemeManager config].followSystemTheme=NO;
                    [TKThemeManager config].themeIndex =0;
                }
                
            }

用法

1.简便用法。

SDK对常见的view控件进行了封装。对于这些常见的控件,如CALayer,UIView,UIImageView,UIButton,UILabel等15个组件进行了开发者属性的定制,在原有属性上加前缀TKTheme。能满足80%以上的开发需求。剩余的需求可以通过通用方法实现。有兴趣的伙伴可以一起来完善简便用法哦。示例代码如下: // UIButton like //UIImageView like //CALayer like。其他控件请参考头文件。

       UIButton *themeSeting = [[UIButton alloc]initWithFrame:CGRectMake(100, 100, 200, 40)];
       [themeSeting addTarget:self action:@selector(showSetingView:) forControlEvents:UIControlEventTouchUpInside];
       [themeSeting setTitle:@"打开设置" forState:UIControlStateNormal];
       [themeSeting setTkThemebackgroundColors:@[UIColor.redColor,UIColor.brownColor]];
       [self.view addSubview:themeSeting];

       UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(10, self.view.bounds.size.height/4+30, 180, 180)];
       [imageView setTkThemeimages:@[[UIImage imageNamed:@"001.jpg"],[UIImage imageNamed:@"002.jpg"]]];
       [self.view addSubview:imageView];
       
       CALayer *layer = [[CALayer alloc]init];
       layer.frame = CGRectMake(10, 10, self.view.bounds.size.width-20, self.view.bounds.size.height/4);
       layer.tkThemebackgroundColors = @[UIColor.brownColor,UIColor.darkGrayColor];
       [self.view.layer addSublayer:layer];

2.万能用法。

所有对象均为object对象,所有对象都具备tkThemeChangeBlock(NSObject+TKUpdate.h)属性,变更主题会触发对象的tkThemeChangeBlock回调,可以在该回调中做主题设置。该回调为主线程,用于执行UI主题变更,但是不要执行耗时操作,耗时操作应该放到异步非主线程执行。示例代码如下: // view.tkThemeChangeBlock // navigationBar.navigationBar

            self.view.tkThemeChangeBlock = ^(id  _Nullable itself, NSUInteger themeIndex) {
                   UIColor *color = nil;
                   if (themeIndex==0) {
                       color = UIColor.whiteColor;
                   }else{
                       color = UIColor.blackColor;
                   }
                   [(UIView*)itself setBackgroundColor:color];
                   dispatch_async(dispatch_get_global_queue(0, 0), ^{
                      //如果除了UI操作,还有其它耗时操作,放到其它非主线程队列
                      // do something, while the long operation is underway.
                   });
               };
               
               self.navigationController.navigationBar.tkThemeChangeBlock = ^(id  _Nullable itself, NSUInteger themeIndex) {
                   UIImage *image = nil;
                   if (themeIndex==0) {
                       image = [UIImage imageNamed:@"005.png"];
                   }else{
                       image = [UIImage imageNamed:@"007.png"];
                   }
                   [(UINavigationBar*)itself setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
               };

要运行示例项目,先克隆仓库,然后在Example目录中运行pod install

需求。

安装。

TKThemeConfig可以通过CocoaPods安装。要安装,只需在Podfile中添加以下行

pod 'TKThemeConfig'

作者。

Tkoul,[email protected]

许可证。

TKThemeConfig遵循MIT许可证。更多信息请参阅LICENSE文件。