我浏览了 apple doc也是,但它只是说明它
Additional control-state flags available for application use.
它只是一个 getter 方法,所以它什么时候设置?
最佳答案
application
和 reserved
基本上是标记。在查看它们的 objective-c 文档时,这一点更加清楚:
disabled : UIControlStateDisabled = 1 << 1
application : UIControlStateApplication = 0x00FF0000
reserved : UIControlStateReserved = 0xFF000000
这意味着 UIControlState
的第二个最低有效位例如负责确定是否为 UIControl
是否被禁用。来自 17 - 24
的所有位(从 1 << 16
到 1 << 23
)供您的应用程序使用,而 25 - 32
(从 1 << 24
到 1 << 31
)供内部框架使用。
这基本上意味着 Apple 能够/允许在使用最低 16 位的同时定义控件的新状态标志,您可以保证能够将 8 位用于您自己的自定义标志。
可以定义自定义标志,例如通过:
let myFlag = UIControlState(rawValue: 1 << 18)
class MyButton : UIButton {
var customFlags = myFlag
override var state: UIControlState {
get {
return [super.state, customFlags]
}
}
func disableCustom() {
customFlags.remove(myFlag)
}
}
可以通过
使用let myButton = MyButton()
print(myButton.state.rawValue) // 262144 (= 2^18)
myButton.isEnabled = false
myButton.isSelected = true
print(myButton.state.rawValue) // 262150 (= 262144 + 4 + 2)
myButton.disableCustom()
print(myButton.state.rawValue) // 6 (= 4 + 2)
关于ios - UIButton的UIControlState "application"有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43759509/