#はじめに
ダークモードとライトモードで色が変わる、システムで提供されてるUIColor
(.systemBackground
等) を自分で指定する方法がありましたので共有します
#UIColor Extension
UIColor を拡張して、以下のようなコードを書きます
import UIKit
extension UIColor {
class var dynamicColor: UIColor {
get {
.init(dynamicProvider: { (traitCollection) -> UIColor in
switch traitCollection.userInterfaceStyle {
case .dark:
return .systemRed
case .light:
return .systemBlue
case .unspecified:
return .systemBlue
@unknown default: return .systemBlue
}
})
}
}
}
#使用法
システムカラーと同様に記述するように使えます
class myViewController: UIViewController {
override func viewDidLoad() {
let button = UIButton()
button.backgroundColor = .dynamicColor
}
}
このようにUIColorを拡張することでも使用することができます
extension UIColor {
class var dynamicColor: UIColor {
get {
.init(dynamicProvider: { (traitCollection) -> UIColor in
return UIColor(red: 0.1, green: 0.1, blue: 0.1, alpha: 0.1)
})
}
}
}