我正在嘗試以編程方式實作 Xcode 顏色集。獲取基于主題的顏色
var appThemeColor : Any {
if UITraitCollection.current.userInterfaceStyle == .dark {
return UIColor.DarkTheme.self
} else {
return UIColor.LightTheme.self
}
}
extension UIColor {
struct LightTheme {
static let barDeselectedColor = UIColor(white: 0, alpha: 0.1)
static let appBackground = #colorLiteral(red: 0.9529411793, green: 0.6862745285, blue: 0.1333333403, alpha: 1)
}
struct DarkTheme {
static let barDeselectedColor = UIColor(white: 0, alpha: 0.1)
static let appBackground = #colorLiteral(red: 0.8078431487, green: 0.02745098062, blue: 0.3333333433, alpha: 1)
}
}
class MainVC: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = appThemeColor.appBackground
}
}
取決于設備顏色模式。應該回傳顏色
view.backgroundColor = appThemeColor.appBackground
我的實作如何沒有按預期作業。任何建議非常感謝。
uj5u.com熱心網友回復:
有幾種更簡單的方法可以做到這一點;
您可以使用以下命令定義顏色dynamic provider initialiser:
struct MyTheme {
private func isDark(_ traitCollection: UITraitCollection) -> Bool {
return traitCollection.userInterfaceStyle == .dark
}
public var barDeselectedColor = UIColor { (traitCollection: UITraitCollection) -> UIColor in
return self.isDark(traitCollection) ? UIColor(red: 0.8078431487, green: 0.02745098062, blue: 0.3333333433, alpha: 1) : UIColor(red: 0.9529411793, green: 0.6862745285, blue: 0.1333333403, alpha: 1)
}
/// etc
}
然后像這樣使用它
self.someBar.backgroundColor = MyTheme().barDeselectedColor
系統會將當前的特征集合提供給您的初始化程式,您將獲得正確的顏色。
或者,您可以將顏色作為動態??顏色添加到資產目錄中,并按名稱參考它們。
uj5u.com熱心網友回復:
您可以簡單地將顏色分配給您的標簽或使用您的顏色集查看背景 在您的Assets.xcassets 中添加一個顏色集命名您的顏色集,例如primary_color并設定顏色值,然后根據需要使用
self.titleLabel.textColor = UIColor(named: "primary_color")
或者
self.yourView.backgroundColor = UIColor(named: "primary_color")
無需檢查移動設備是否處于暗模式或點亮此顏色集會自動處理您在顏色集中設定的顏色
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/334840.html
