我正在向extension
添加UIButton
,以便在disabled/enabled
extension UIButton {
override public var enabled: Bool {
didSet {
if enabled {
changeBorderColorForEnabled()
} else {
changeBorderColorForDisabled()
}
}
}
}
问题是 有时 边框颜色会改变,但标题颜色不会改变。
具体来说,它发生变化太快,如下面的代码片段,当它执行行//==== 1. =====//
和//==== 2. =====//
// Enabled by default
self.priceButton.enabled = true //==== 1. =====//
if bought {
self.priceButton.setTitle("bought", forState: UIControlState.Normal)
} else {
if let price = self.product?.price {
self.priceButton.setTitle("Buy for \(price)", forState: UIControlState.Normal)
} else {
// Disable if price hasn't been retrieved
self.priceButton.enabled = false //==== 2. =====//
}
}
我该如何解决这个问题?
答案 0 :(得分:1)
我猜这个问题是由于干扰了UIButton对setEnabled:
的响应,你正在绘制按钮试图绘制的同时 - 这是搞乱按钮试图画画。
我要尝试的第一件事就是添加一个短暂的延迟,让按钮有机会先做自己的绘图(对于delay
,请参阅https://stackoverflow.com/a/24318861/341994):
didSet {
delay(0.1) {
if enabled {
changeBorderColorForEnabled()
} else {
changeBorderColorForDisabled()
}
}
}