Я использую подкласс для своего UIButton, и у него есть переменная с именем isActive. Мне нужно изменить цвет границы кнопки на основе этой переменной. Эта переменная изменится программно. Пожалуйста, помогите мне с этим.
@IBDesignable
class buttonCTAOutlineDark: UIButton {
override init(frame: CGRect) {
super.init(frame: frame)
commonInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit()
}
override func prepareForInterfaceBuilder() {
commonInit()
}
@IBInspectable var isActive: Bool {
get {
return self.isActive
}
set (active) {
if active {
commonInit(isActive: active)
}
}
}
func commonInit(isActive: Bool = false) {
self.backgroundColor = .clear
self.layer.cornerRadius = 4
self.layer.borderWidth = 1
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
}
}
}
get {return self.isActive}
будет вызываться рекурсивно. Поэтому вместо этого попробуйте{return isActive}
. Также вset (active)
методcommonInit
будет вызываться только тогда, когдаactive
истинно. так что можешь попробоватьset (active) { isActive = active;commonInit(isActive: active)}
- person Natarajan   schedule 29.11.2018