Skip to content

设置主题、夜间模式、图片赋值、字体设置、代码设置、Interface Builder中设置、UIImageView、UIButton的主题图片设置UILabel、UItextView、UIButton的字体颜色设置

License

Notifications You must be signed in to change notification settings

FuJunZhi/FUThemeManager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7ca7103 · Dec 22, 2017

History

20 Commits
Sep 19, 2017
Sep 19, 2017
Sep 19, 2017
Sep 20, 2016
Sep 19, 2017
Sep 19, 2017
Sep 20, 2016
Dec 22, 2017

Repository files navigation

FUThemeManager

特点

  • 可以对所有NSObject子类对象进行设置
  • 灵活动态添加主题
  • 当前主题记忆功能, 下一次启动自动布置
  • 轻量级设计, 简化文件架构, 全部集合为两个文件中
  • 支持主题字体设置(字体类型、字体大小...)
  • 支持图片赋值类型设置(仅在wifi下显示图片、不显示图片、显示图片...)
  • 支持UIView的主题背景颜色设置(代码设置、Interface Builder中设置)
  • 支持UIImageView、UIButton的主题图片设置(代码设置、Interface Builder中设置)
  • 支持UILabel、UItextView、UIButton的字体颜色设置(代码设置、Interface Builder中设置)
  • 所有设置一行代码搞定

CocoaPods

  1. Add pod 'FUThemeManager', '~> 1.0.2' to your Podfile.

  2. Run pod install or pod update.

  3. '#import "FUThemeManager.h"'.

效果图

用法

添加新主题

/*
* 添加主题
* 添加后的主题,会自动存储 无需每次都添加
*
* defaultJson 要添加的主题json全路径
* DefaultTheme 主题名称
*
*/
[FUThemeManager fu_AddThemeConfigJson:@"defaultJson" themeString:@"DefaultTheme"];

JSON格式

{
   "自定义标签1": {
      "color1" : "#f5f5f5",
      "color2" : "255,255,255",
      "color3" : "255,255,255,0.5",
   },
   "color4" : "#38befa",

   "自定义标签2": {
      "image1" : "test1.png",
   },

   "image2" : "test2.png",
}
json数据,颜色值可以是rgb/rgba/16进制 格式
可以自定义标签,多层级书写;赋值的时候层级关系之间只需用"."分割就行
例如:@"自定义标签1.color1"

默认主题设置

/*
* 默认主题
*
* DefaultTheme 主题名称
*
* 指定第一次启动APP时默认启用的主题
*/
[FUThemeManager fu_DefaultTheme:@"DefaultTheme"];

切换主题

/*
* 切换主题
*
* DefaultTheme 主题名称
*
* APP下一次开启会自动启用上一次的主题.
*/
[FUThemeManager fu_ChangeTheme:@"DefaultTheme"];

  • 不要忘记设置默认主题, 应用中应该最少会有一个默认的主题
  • 添加新主题、默认主题设置 一般在 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions中添加

主题配置

self.fu_Theme.fu_ThemeChangeConfig(^(NSString *currentTheme, NSString *notiName) {
   /*
   * 所有NSObject子类都可以直接使用此方法
   *
   * 除了网络图片赋值,其他所有要根据主题改变的,都放在配置内部设置(颜色/字体/本地图片赋值)
   *
   * 根据notiName可知:
   *     FUFontTypeDidChangeNotification 字体改变
   *     FUThemeDidChangeNotification 主题改变
   */ 
});

颜色设置

*
* 颜色赋值,根据json数据的层级关系,层级关系之间用"."分割
*
* json数据里,色值可以是rgb/rgba/16进制 格式
*/
self.view.backgroundColor = [UIColor fu_ThemeColorName:@"Mine.Mine_Cell_ContentLabel_TextColor"];
  • Interface Builder中设置主题字体颜色

本地图片设置

*
* 图片赋值,根据json数据的层级关系,层级关系之间用"."分割
*
* fu_ThemeImageName
*/
self.testImageViewA.image = [UIImage fu_ThemeImageName:@"自定义标签2.image1"];
self.testImageViewB.image = [UIImage fu_ThemeImageName:@"image2"];

字体设置

*
* 根据设置的字体类型、字体大小返回当前字体
*
*/
self.testLabel.font = [UIFont fu_ThemeFont];

字体类型设置

/**
*  系统      FUFontTypeSystem,
*
*  华康娃娃体 FUFontTypeDFWaWaW5,
*/
[FUThemeManager fu_FontType:fontType];

字体大小设置

/**
*
*  超小 FUThemeFontSizeVerySmall = 6,
*
*  小   FUThemeFontSizeSmall = 9,
*
*  中   FUThemeFontSizeMiddle = 12,
*
*  大   FUThemeFontSizeLarge = 15,
*
*  超大 FUThemeFontSizeLargest = 18,
*/
[FUThemeManager fu_ThemeFontSize:fontSizeType];

网络图片赋值类型

/** 
*
*  显示图片 FUThemePhotoStyleShowPhotos
*
*  不显示图片 FUThemePhotoStyleShowPhotosNone,
*
*  仅在wifi下显示图片 FUThemePhotoStyleShowPhotoOnlyWifi,
*
*  未知情况 FUThemePhotoStyleShowPhotoUnKnow,
*/
[FUThemeManager fu_ThemePhotoStyle:showPhotoStyle];

==============

提供的分类方法

UIImage (FUThemeImage)
//根据当前主题获取图片
+ (UIImage *)fu_ThemeImageName:(NSString *)imageName;
UIFont (FUThemeFont)
//根据当前主题返回Font
+ (UIFont *)fu_ThemeFont;
NSURL (FUThemeUrl)
//根据当前主题返回URL
+ (NSURL *)fu_ThemeUrl:(NSString *)url;
UIImageView (FUThemeImageView)
//根据网络图片赋值类型对UIImageView赋值
- (void)fu_setImageWithUrlStr:(NSString *)url placeholder:(UIImage *)place;
UIButton (FUThemeButton)
//根据网络图片赋值类型对UIButton赋值
- (void)fu_setImageWithUrlStr:(NSString *)url forState:(UIControlState)state placeholderImage:(UIImage *)placeholder;

Interface Builder中可设置的属性

UIImageView
  • Interface Builder中设置主题图片
UIButton
  • Interface Builder中设置主题字体颜色
  • Interface Builder中设置主题图片
UIView
  • Interface Builder中设置主题背景颜色
UILabel
  • Interface Builder中设置主题字体颜色
UITextView
  • Interface Builder中设置主题字体颜色

许可证

LEETheme 使用 GPL V3 许可证,详情见 LICENSE 文件。

About

设置主题、夜间模式、图片赋值、字体设置、代码设置、Interface Builder中设置、UIImageView、UIButton的主题图片设置UILabel、UItextView、UIButton的字体颜色设置

Resources

License

Stars

Watchers

Forks

Packages

No packages published