RSThemeKit
允许您快速轻松地为您的应用程序设置颜色主题
需求
Swift 4.2
& 5.0
。适用于 iOS 8+
安装
CocoaPods
CocoaPods 是一个用于 Cocoa 项目的依赖管理器。有关使用和安装说明,请访问他们的网站。使用 CocoaPods 将 RSThemeKit
集成到您的 Xcode 项目中,请在您的 Podfile
中指定它
pod 'RSThemeKit'
手动
如果您不愿意使用上述任何依赖项管理器,可以手动将 RSThemeKit
集成到项目中。将 Source/RSThemeKit
目录放入您的 Xcode 项目中。请确保启用 如有需要则复制项目项
和 创建组
。
帮助文件
import UIKit
import RSThemeKit
class TabBarController: ThemeTabBarController {
}
class NavigationController: ThemeNavigationController {
}
class ViewController: ThemeViewController {
var tableView: ThemeTableView!
var collectionView: ThemeCollectionView!
}
和 ThemeTableCell, ThemeCollectionCell
添加您的自定义视图
class CustomView: UIView {
func addThemeObrserver() {
ThemeManager.addThemeObrserver(self, selector: #selector(changedTheme))
changedTheme()
}
@objc func changedTheme() {
decorator(theme: ThemeManager.currentTheme)
}
func decorator(theme: ThemeModel) {
backgroundColor = theme.cellBackgroundColor
}
}
class ViewController: ThemeViewController {
let customView = CustomView()
override func viewDidLoad() {
super.viewDidLoad()
customView.addThemeObrserver()
}
}
快速入门
从 ThemeViewController 继承您的 UIViewController
import UIKit
import RSThemeKit
class ViewController: ThemeViewController {
}
为显示主题创建一个模型。我将使用一个 table view 来实现它。
import UIKit
import RSThemeKit
class ViewController: ThemeViewController {
var model: [[ThemeType]] = [[.system], [.light, .dark]]
}
创建一个 ThemeTableView
import UIKit
import RSThemeKit
class ViewController: ThemeViewController {
var tableView: ThemeTableView!
override func viewDidLoad() {
super.viewDidLoad()
setupTableView()
}
private func setupTableView() {
tableView = ThemeTableView(frame: self.view.frame, style: .grouped)
tableView.addThemeObrserver()
self.view.addSubview(tableView)
self.tableView.dataSource = self
self.tableView.delegate = self
}
}
为 ThemeTableCell 添加 addThemeObrserver
let cell = ThemeTableCell()
cell.addThemeObrserver()
extension ViewController: UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return model.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return model[section].count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = ThemeTableCell()
cell.addThemeObrserver()
let type = model[indexPath.section][indexPath.row]
if type.identifier() == ThemeManager.currentTheme.identifier {
cell.accessoryType = .checkmark
}
switch type {
case .system:
break
case .light:
cell.textLabel?.text = "Light Appearance"
case .dark:
cell.textLabel?.text = "Dark Appearance"
case .tintedNight:
cell.textLabel?.text = "Tinted Night Appearance"
case .custom( _):
cell.textLabel?.text = "Custom"
}
return cell
}
}
设置主题
let type = model[indexPath.section][indexPath.row]
ThemeManager.setTheme(type: type)