iOS颜色,主题那些事
2018-01-14 本文已影响103人
DevKyle
颜色管理
颜色是一个app展示的基础,每一个成熟的app都该有自己的设计风格。为了规范颜色,通过枚举来来管理颜色。为了切换主题,采用不同枚举对应多个颜色。可以编辑TCColorConfig.swift 来编辑设置默认配色方案 ,也可以通过ThemeManager.sharedManager.setThemeColorList
动态设置配色方案。
需要注意的是TCColorName
个数要和kDefaultColorList的个数需要一一对应。主题的个数ThemeType
要和kDefaultColorList
每个元素的个数一致。
// default work with kDefaultColorList
public enum TCColorName:Int {
case ColorNameRed = 0
case ColorNameBlue
}
let kDefaultColorList:[[String]] = [
[ "ee1a1a", "892323"],
[ "1b88ee", "144e84"]
]
public enum ThemeType:Int {
case themeDay = 0
case themeNight
}
功能
颜色
提供了十六进制,根据枚举TCColorName来设置颜色的方法
UIView
-
tc_themeBlock
:是一个主题切换的block,不止可以处理颜色的变化。还可以设置一切和UIView
相关的属性。 -
tc_backgroundColor
:当主题切换,可以用来设置UIView
背景色 -
tc_borderColor
设置layerborderColor
UILabel Extension
-
tc_textColor
的UILabel
字体颜色 -
tc_highlightedTextColor
的UILabel
高亮字体颜色
UIImageView
UIImageView
在主题切换中需要不同的图片,所以需要对图片的命名采取一定的规范,通过
ThemeManager.sharedManager.setThemeImagePrefix
命名规范,比如["","night"],那么"themeImage"
对应的主题图片名字为"night_themeImage"。提供两种方式来设置主题图片如下
-
tc_imageName
设置默认主题下的图片名
对于纯色的图片 还提供对图片进行着色的方法
func set_imageName(_ imageName:String?,nightTintColor tintColor:TCColorName?)
UIButton
UIButton
具有多个状态,对于图片
func tc_setImage(_ imageName: String?, for state: UIControlState)
func tc_setImage(_ imageName: String?, tintColor:TCColorName?,for state: UIControlState)
对于UIButton
的字体颜色提供
func tc_setTitleColor(_ color: TCColorName?, for state: UIControlState)
func tc_setTitleShadowColor(_ color: TCColorName?, for state: UIControlState)
安装
推荐 直接拖动文件到工程文件下 ,当然也支持CocoaPods
CocoaPods
use_frameworks!
pod 'ThemeColor'
Source files
复制"ThemeColor" 文件夹中所有的文件到你的工程中去
配置
编辑 TCColorConfig.swift
文件
喜欢的朋友,可以去GitHub上star一下