To run the example project, clone the repo, and run pod install
from the Example directory first.
CTVITTheme-master is available through CocoaPods. To install
it, simply add the following line to your Podfile:
pod 'CTVITTheme-master'
liyuunxiangGit
CTVITTheme-master is available under the MIT license. See the LICENSE file for more info.
To run the example project, clone the repo, and run pod install
from the Example directory first.
CTVITTheme-master is available through CocoaPods. To install
it, simply add the following line to your Podfile:
pod 'CTVITTheme-master'
liyuunxiangGit
CTVITTheme-master is available under the MIT license. See the LICENSE file for more info.
1.1、直接podfile文件导入pod 'CTVITTheme-master'
,然后执行pod install
1.2、目前如果没有上传到pod上面,需要收到导入文件,复制Classes
里面的所有文件,导入到工程当中。
[[CTVITThemeManager sharedInstance] setupThemeNameArray:@[CTVITThemeWhite, CTVITThemeBlack,CTVITThemeBlue]];
CTVITThemeWhite, CTVITThemeBlack,CTVITThemeBlue,是资源主题Bundle的名称,下面会说到资源Bundle的引入方法。
具体调用非常简单,比如需要换肤的视图控件原本是调用backgroundColor设置颜色,只需要换成调用扩展方法theme_backgroundColor即可,例如:
self.view.theme_backgroundColor = @"block_bg";
self.textField.theme_textColor = @"text_h1";
self.image.theme_image = @"icon_face";
富文本需要用CTVITThemeForegroundColorAttributeName``替换
NSForegroundColorAttributeName`,例如:
[tabbarItem theme_setTitleTextAttributes:@{CTVITThemeForegroundColorAttributeName:@"tabbar_normalTitlecolor"} forState:UIControlStateNormal];
如果直接设置属性的方式不满足需求,还可以自己监听通知CTVITThemeChangedNotification,收到通知之后自行做颜色图标等切换。
颜色字符串和图片是放在单独的Bundle里面进行管理的,所以刚开始要新建自己的主题Bundle. Bundle中 新建ColorsMap.plist和Images.xcassets
file
->New
->Target
->macOS
->Bundle
创建完成之后,设置如下:
然后在模拟器和真机都进行command + B编译生成Bundle包
Command + B后生成Bundle包,点击Products里面的
bundle文件,Show in Finder 看到制作好的Bundle包
完成,下面就是在工程中使用了…
点击Products里面的bundle文件,Show in Finder 看到制作好的Bundle包,然后把bundle包拖拽到咱们需要使用的工程里面。
皮肤bundle文件
文件夹里的Bundle形成文件
拖入到项目当中。皮肤bundle文件
中的CTVITTheme-White
的文件里的内容制作bundle包。制作流程看上一步。其实实现原理非常简单的,我这里拿UIView举例子:
#import
@interface UIView (CTVITTheme)
@property (nonatomic, copy) NSString *theme_backgroundColor;
@property (nonatomic, copy) IBInspectable NSString *sd_background;
@property (nonatomic, copy) NSString *theme_tintColor;
@end
这是针对UIView提供的扩展,大家可以看到其中有换肤属性theme_backgroundColor ,如下图,我们在属性theme_backgroundColor 的Setter方法中有根据主题配置调用系统的相应方法,然后对控件注册监听,等切换主题之后就会收到通知,然后执行theme_didChanged方法,为控件设置正确的主题UI,That’s all~