Ваше isActive
свойство написано неправильно.Во-первых, это не должно быть вычисляемое свойство.В настоящее время метод get просто вызывает бесконечную рекурсию, а метод set фактически ничего не устанавливает.
Свойство isActive
должно быть хранимым свойством с наблюдателем свойства didSet
:
@IBInspectable
var isActive: Bool {
didSet {
}
}
Внутри didSet
, вы можете просто положить последнюю часть commonInit
.Первая часть commonInit
не должна запускаться каждый раз, когда изменяется isActive
.Я рекомендую вам извлечь его как метод с именем updateBorder
:
func updateBorder(isActive: Bool) {
if (isActive) {
self.tintColor = ACTIVE_COLOR
self.layer.borderColor = ACTIVE_COLOR.cgColor
} else {
self.tintColor = nil
self.layer.borderColor = UIColor(red:0.69, green:0.72, blue:0.77, alpha:1.0).cgColor
}
}
А затем в didSet
вы можете просто вызвать это:
updateBorder(isActive: isActive)