Вы можете использовать backgroundColor
в качестве условия, чтобы проверить, какое из них вы должны выбрать следующее.
Подход с использованием атрибута backgroundColor
@IBAction func background_toggle(_ sender: UIButton) {
if self.view.backgroundColor == .white {
self.view.backgroundColor = .black
} else {
self.view.backgroundColor = .white
}
}
Другими словами: если backgroundColor
равно .white
, установите его .black
В противном случае установите его .white
Советы:
Поскольку backgroundColor
является UIColor
, Swift выводит тип, такВы можете просто набрать .white
или .black
при его назначении, без необходимости указывать UIColor.white
или UIColor.black
.
Вы можете иметь переменную состояния, такую как Bool
, UIColor
или Enum
.Затем вы сравниваете с этим вместо backgroundColor
вида.
Подход с использованием переменной Bool
var isWhite = true
@objc func handleOpenTermsAndConditions() {
if self.isWhite {
self.isWhite = false
self.view.backgroundColor = .black
} else {
self.isWhite = true
self.view.backgroundColor = .white
}
}
Подход с использованием переменной UIColor
var currentBackgroundColor : UIColor = .white
@objc func handleOpenTermsAndConditions() {
if currentBackgroundColor == .white {
self.currentBackgroundColor = .black
self.view.backgroundColor = .black
} else {
self.currentBackgroundColor = .white
self.view.backgroundColor = .white
}
}
Подход с использованием состояния Enum
Если вы хотите ограничить цвета, вы можете создать Enum
с доступными цветами.Я думаю, что излишне использовать его с такой простой логикой, как .white
|.black
.
Шаг 1: Создайте enum
.
enum AvailableColor {
case white
case black
func currentUIColor() -> UIColor {
switch self {
case .white:
return UIColor.white
case .black:
return UIColor.black
}
}
}
Шаг 2: Создайте экземпляр переменной состояния и используйте логику enum
var currentColorState : AvailableColor = .white
@objc func handleOpenTermsAndConditions() {
if currentColorState == .white {
currentColorState = .black
} else {
currentColorState = .white
}
self.view.backgroundColor = currentColorState.currentUIColor()
}