在理解UIButton
的概念时,我得到了一个奇怪的UIControlState
结果。这是我与UIButton
相关的简单代码。
import UIKit
class ViewController: UIViewController {
let normalBtn: UIButton = {
let button = UIButton()
button.frame = CGRect(x: 80, y: 200, width: 200, height: 100)
button.setTitle("", for: .normal)
button.setTitle("", for: .highlighted)
button.setTitle("", for: .selected)
button.setTitle("", for: .focused)
button.titleLabel?.font = UIFont.systemFont(ofSize: 50)
return button
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(normalBtn)
normalBtn.addTarget(self, action: #selector(btnSelected), for: .touchUpInside)
}
@objc func btnSelected() {
print("highlight", normalBtn.isHighlighted)
normalBtn.isSelected = !normalBtn.isSelected
}
}
以下是关于此代码的情况。
normalBtn
时,此按钮的状态会将normal
更改为
selected
。 normalBtn
时,其状态会发生变化
selected
到normal
。 highlighted
时,当这些过渡时,normalBtn
属性也应该更改。所以我对改变头衔的期望是
normal
至selected
)selected
至normal
)但结果是,
normal
至selected
)selected
至normal
)我真的不知道为什么。关于这个问题的任何想法?感谢。
答案 0 :(得分:2)
尝试添加与突出显示状态组合的选定状态。喜欢:
button.setTitle("", for: UIControlState.selected.union(.highlighted))
答案 1 :(得分:0)
已接受答案的替代语法:
button.setTitle("?", for: [.selected, .highlighted])