QXTheme 1.0.8

QXTheme 1.0.8

Maoyis 维护。



QXTheme 1.0.8

  • 作者:
  • Maoyis

QXTheme

CI Status Version License Platform

示例

DEMO

short1 short2 short3

需求

  • iOS 8.0+

主题文件目前只支持 plist 以及 json 文件

安装

QXTheme 可以通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile 中

pod 'QXTheme'

使用

  1. 初始配置一个默认主题(推荐在 AppDelegate.h 的 - (BOOL)application:application didFinishLaunchingWithOptions: 方法中设置)

    dispatch_async(dispatch_get_main_queue(), ^{ [QXThemeManager initDefaultThemeWithFileName:@"Theme_Day.plist"]; [QXThemeManager refreshTheme]; });

  2. 控件定制主题方法:

    普通使用:

     [self.label qx_OrderPacks:^(QXThemeStaff *staff) {
         staff.packing(@selector(setTextColor:), @[COLOR_ATTR(@"textColor1")]);
         staff.packing(@selector(setFont:), @[FONT_ATTR(@"labelFont")]);
         staff.packing(@selector(setBackgroundColor:), @[COLOR_ATTR(@"themeColor")]);
         staff.packing(@selector(setText:), @[TEXT_ATTR(@"labelText")]);
     }];
     [self.label.layer qx_OrderPacks:^(QXThemeStaff *staff) {
         staff.packing(@selector(setCornerRadius:), @[@6]);//偷下懒。这些也可以定制
         staff.packing(@selector(setBorderWidth:), @[@1]);
         staff.packing(@selector(setBorderColor:), @[COLOR_ATTR(@"textColor1")]);
     }];
    

    链式用法:

     [self.navigationBar qx_OrderPacks:^(QXThemeStaff *staff) {
     staff.
     packing(@selector(setTranslucent:), @[OTHER_ATTR(@"nav_translucent")]).
     packing(@selector(setBarTintColor:), @[COLOR_ATTR(@"themeColor")]).
     packing(@selector(setTintColor:), @[COLOR_ATTR(@"tabbar_selectColor")]);
         
     staff.packing(@selector(setTitleTextAttributes:),
                   @[@{NSFontAttributeName:FONT_ATTR(@"navTitle"),
                       NSForegroundColorAttributeName:COLOR_ATTR(@"tabbar_selectColor")}]);
    

}];

**PS:**定制属性需要通过**COLOR_ATTR、FONT_ATTR、TEXT_ATTR、IMAGE_ATTR、OTHER_ATTR**包装对应的主题颜色、字体、文本、图片,以及其他一些属性(如:是否透明,圆角,frame等)
  1. 修改主题:

     //修改当前主题
     [QXThemeManager changeThemeWithTag:@"themeColor" value:hexStr tagType:QXThemeTagTypeOfColor];
    
  2. 切换主题

     [QXThemeManager changeThemeWithFileName:@"新主题.json"];
    
  3. 导出主题

         if (![[QXThemeManager shareManager].curTheme exportThemeFileWithFileType:QXThemeFileTypeJson name:@"ThemeName" path:@"myDesktop/QXTheme" error:&error]) {
         NSLog(@"导出失败Error:%@", error.localizedDescription);
         }
    

日志

  • 1.0.7: 新增*compareCurThemeWithName:*接口用于比较当前主题

作者

莫伊斯, [email protected]

许可证

QXTheme遵循MIT许可证。有关更多信息,请参阅LICENSE文件。