Короткий ответ: раннее (или статическое) привязку относится к привязке времени компиляции и позднему (или динамическому) привязке относится к привязке времени выполнения (например, когда вы используете отражение).
Для iOS 13 , Вы можете использовать эту собственность проверить, является ли текущий стиль темным способом или нет:
if #available(iOS 13.0, *) {
if UITraitCollection.current.userInterfaceStyle == .dark {
print("Dark mode")
}
else {
print("Light mode")
}
}
Вы можете использовать этот добавочный номер:
import UIKit
extension UIApplication {
@available(iOS 13.0, *)
var userInterfaceStyle: UIUserInterfaceStyle? {
return self.keyWindow?.traitCollection.userInterfaceStyle
}
}
@available(iOS 13.0, *)
func setSystemTheme() {
switch UIApplication.shared.userInterfaceStyle {
case .dark?:
currentTheme = .dark
case .light?:
currentTheme = .light
default:
break
}
}
1/для UIView/UIViewController:
self.traitCollection.userInterfaceStyle == .dark
2/для статического или другого:
UITraitCollection.current.userInterfaceStyle == .dark
, НО:
//Never use this! You will get wrong value in app extensions (ex. ToDay widget)
UIScreen.main.traitCollection.userInterfaceStyle == .dark //WRONG!
Создайте функцию класса в течение времени метода записи 1 и используйте везде, Вы хотите
class func isDarkMode()->Bool{
if #available(iOS 12.0, *) {
if UIScreen.main.traitCollection.userInterfaceStyle == .dark {
return true
} else {
return false
}
} else {
return false
}
}