主题 2.0.0

Themes 2.0.0

测试已测试
语言语言 SwiftSwift
许可证 NOASSERTION
发布最后发布2018年11月
SPM支持SPM

Khoa Pham维护。



Themes 2.0.0

Themes

CI Status Version Carthage Compatible License Platform Swift

故事

您是否想过支持夜间模式?或者根据季节改变应用程序的外观?或者根据付费状态切换功能?这些都是对应用程序事件的反应。

许多其他框架鼓励您使用硬编码的值,例如label.xyz_textColors = [.red, .blue], textField.xyz_fonts = [font1, font2], ...。这也使得更改变得非常困难,因为索引的用法,您需要记住1st索引是该主题,2nd索引是那个主题,... 另外,xyz_textColors就像是试图复制整个UIKit API,这些API经常更新。😱

Themes就是为了帮助您。通常,在一个应用程序中,您有一些有限的颜色和字体。您可以有更多,但这并不鼓励,并且有设计问题。当你有一个主题时,更改发生在同一个地方。

功能

  • 支持iOS、macOS、tvOS、watchOS的通用支持
  • 完全控制主题
  • 更新现有视图
  • 面向协议
  • 可扩展

使用

步骤 1: 创建主题

通过遵守 Theme 或只是标记协议来声明主题。您可以声明任何东西,包括嵌套对象,全取决于您的需求。您还可以创建任意数量的主题。

struct MyTheme: Theme {
  let topImage: UIImage
  let cellColor: UIColor
  let backgroundColor: UIColor
  let name: String
  let titleFont: UIFont
  let subtitleFont: UIFont
}

然后根据您的模板创建一些主题。

let dayTheme = MyTheme(topImage: UIImage(named: "day"), cellColor: .white)
let nightTheme = MyTheme(topImage: UIImage(named: "night"), cellColor: .black)

这种做法的好处在于您可以从 JSON 初始化您的主题,这可以从后端获取。🚀

let json = [
  "primary_color": "#21ABE9",
  "font_name": "Chewy"
]
let unicornTheme = MyTheme(json)

步骤 2: 注册当前主题

当应用程序启动时,您需要声明 1 个主题作为当前主题,它可以来自缓存。

ThemeManager.shared.currentTheme = dayTheme

步骤 3: 响应主题更改

您可以在喜欢的地方执行此操作。它是使用当前主题设置的,并且当主题更改时。

// ViewController.swift
override func viewDidLoad() {
  super.viewDidLoad()

  use(MyTheme.self) {
    $0.title = $1.name
    $0.tableView.backgroundColor = $1.backgroundColor
    $0.navigationController?.navigationBar.setBackgroundImage($1.topImage, for: .default)
    $0.tableView.rowHeight = $1.name == "Unicorn" ? 180 : 120
    $0.tableView.reloadData()
  }
}

// Cell.swift
override func awakeFromNib() {
  super.awakeFromNib()

  imageView.layer.cornerRadius = 5
  imageView.layer.masksToBounds = true

  use(MyTheme.self) {
    $0.titleLabel.font = $1.titleFont
    $0.subtitleLabel.font = $1.subtitleFont
    $0.container.backgroundColor = $1.cellColor
  }
}

步骤 4: 更改主题

更改当前主题就像分配一个新主题一样简单。所有事情都将在实时中迅速发生。

ThemeManager.shared.currentTheme = nightTheme

安装

主题 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中

pod 'Themes'

主题 同样可通过 Carthage 获得。要安装,只需在 Cartfile 中写入

github "onmyway133/Themes"

主题 也可以手动安装。只需下载并将 Source 文件夹拖放到您的项目中。

作者

Pham Khoa,[email protected]

贡献

我们非常希望您为 主题 贡献,有关更多信息,请查看 CONTRIBUTING 文件。

许可

主题 在 MIT 许可下提供。有关更多信息,请查看 LICENSE 文件。