皮肤管理器是一个轻量级的仅用 Swift 编写的应用主题管理库。该项目受到了许多开源项目的启发,例如 swiftTheme、NightNight。与其他类似的项目相比,SkinManager 提供了便捷的 API、简单的使用通知以及许多其他功能。
配置主题数据
view.skin.backgroundColor = ColorPicker.hexs("#2dff86","#77054c")
label.skin.textColor = ColorPicker.hexs("#fe5533","#33ddff")
label.skin.alpha = CGFloatPicker.values([0.8,1.0])
imageView.skin.image = ImagePicker.names(["day","night"])
或者,您也可以移除所有类型
view.skin.backgroundColor = .hexs("#2dff86","#77054c")
label.skin.textColor = .hexs("#fe5533","#33ddff")
label.skin.alpha = .values([0.8,1.0])
imageView.skin.image = .names(["day","night"])
更改主题
定义您自己的主题名称
public enum Theme:Int{
case day = 0
case night
}
struct ThemeManager{
public static var theme:Theme = .day{
didSet{ SkinManager.skinIndex = theme.rawValue }
}
}
切换主题
switch ThemeManager.theme {
case .day: ThemeManager.theme = .night
case .night: ThemeManager.theme = .day
}
如果您不想自动更新主题,可以使用选择器避免使用 'if else'
view.backgroundColor = ColorPicker.hexs("#ff00ff","#00ff00").value
有时,您可能希望当主题更改时得到通知。SkinManager 提供了一个简单的 API。您不需要像这样编写很多代码
NotificationCenter.default.addObserver(self, selector: #selector(doMethod), name: NSNotification.Name(rawValue: "NotificationName"), object: nil)
并在 dealloc 时移除
NotificationCenter.default.removeObserver(self, name: NSNotification.Name(rawValue:NotificationName), object: nil)
简单地写
SkinManager.add(observer: self, for: #selector(doMethod))
或者使用闭包
SkinManager.add(observer: self){ doSomeThing }
在 dealloc 被调用后,观察者将自动移除。
var backgroundColor:ColorPicker?
var alpha:CGFloatPicker?
var tintColor:ColorPicker?
var text:StringPicker?
var textColor:ColorPicker?
var tintColor:ColorPicker?
var shadowColor:ColorPicker?
var highlightedTextColor:ColorPicker?
var textColor:ColorPicker?
var textColor:ColorPicker?
var image:ImagePicker?
func setImage(_ imagePicker:ImagePicker?, for state:UIControlState)
func setBackgroundColor(_ imagePicker:ImagePicker?, for state:UIControlState)
func setTitle(_ stringPicker:StringPicker?,for state:UIControlState)
func setTitleColor(_ colorPicker:ColorPicker?, for state:UIControlState)
func setAttributedTitle(_ attributedStringPicker:AttributedStringPicker?, for state:UIControlState)
var separatorColor:ColorPicker?
var trackTintColor:ColorPicker?
var progressTintColor:ColorPicker?
var progressImage:ImagePicker?
var trackImage:ImagePicker?
var pageIndicatorTintColor:ColorPicker?
var currentPageIndicatorTintColor:ColorPicker?
var barTintColor:ColorPicker?
var barTintColor:ColorPicker?
public var barTintColor:ColorPicker?
var barTintColor:ColorPicker?
var onTintColor:ColorPicker?
var thumbTintColor:ColorPicker?
var onImage:ImagePicker?
var offImage:ImagePicker?
var sliderThumbTintColor:ColorPicker?
var maximumTrackTintColor:ColorPicker?
var minimumTrackTintColor:ColorPicker?
var backgroundColor:CGColorPicker?
var borderColor:CGColorPicker?
var shadowColor:CGColorPicker?
var fillColor:CGColorPicker?
var strokeColor:CGColorPicker?
MIT许可证(MIT)
版权所有 © 2016 nangezao(《https://github.com/nangege/》)
以下是在此软件和关联文档(“软件”)副本的任何个人,免费、无限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许获得软件副本的个人这样做,条件如下
上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。
软件按“现状”提供,不提供任何形式的 warranties,无论是明示的还是暗示的,包括但不限于对适销性、特定用途适用性和非侵犯性的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论是在合同行为、侵权或其他行为中产生的,从软件产生、出现或与此软件的使用或其他交易有关的。