多主题cocoapods

问题描述

我有一个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 (将#修改为@)