问题描述
我有一个iOS框架,我使用cocoapods进行内部分发, lib是一些基本组件,例如按钮,颜色和标签。 lib最初应该使用一种颜色,现在是 扩展为一组新的颜色和样式。
因此在lib初始化内部,开发人员应仅传递主题范围 lib应该从本地JSON加载:
Theme.init(type: Range1)
例如,按钮使用主题类来存储这些颜色:
public protocol ButtonProtocolTheme {
var backgroundColor: UIColor { get }
var titleColor: UIColor { get }
}
open class DefaultButton: ButtonProtocolTheme {
public init() {}
open var backgroundColor: UIColor {
return UIColor.theme(.primaryColor)
}
open var titleColor: UIColor {
return UIColor.theme(.secondaryColor)
}
}
按钮使用该主题实现颜色和样式:
class CustomButton: UIButton {
private var theme: ButtonProtocolTheme = DefaultButton()
public override func awakeFromNib() {
super.awakeFromNib()
setup()
}
func setup() {
backgroundColor = theme.backgroundColor
titleLabel?.textColor = theme.titleColor
}
}
问题是,现在第二种颜色范围不仅更改了JSON,还更改了样式, 我当时在考虑只使用另一个目标,并使用另一个具有相同名称的文件:DefaultButton,仅指向第二个目标并更改实现,但是我不确定该如何与cocoapods配合使用。
仍然可以使用任何方式:
Theme.init(type: Range2)
而不在代码内部实现一堆ifs?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)