RSThemeKit 1.0.4

RSThemeKit 1.0.4

Robert Shaginyan 维护。



  • Robert Shaginyan

RSThemeKit

允许您快速轻松地为您的应用程序设置颜色主题

Pod Version Swift Version Swift Version Plaform License MIT

需求

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)