ios - UIButton的UIControlState "application"有什么用?

标签 ios swift uibutton uicontrolstate

我浏览了 apple doc也是,但它只是说明它

Additional control-state flags available for application use.

它只是一个 getter 方法,所以它什么时候设置?

最佳答案

applicationreserved基本上是标记。在查看它们的 objective-c 文档时,这一点更加清楚:

disabled : UIControlStateDisabled = 1 << 1

application : UIControlStateApplication = 0x00FF0000

reserved : UIControlStateReserved = 0xFF000000

这意味着 UIControlState 的第二个最低有效位例如负责确定是否为 UIControl是否被禁用。来自 17 - 24 的所有位(从 1 << 161 << 23 )供您的应用程序使用,而 25 - 32 (从 1 << 241 << 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/

相关文章:

iphone - 在后台查看捕获

ios - xcodebuild 命令在 codesign 上失败,但日志显示使用了不正确的配置文件 uuid

ios - 触摸外部时如何更改按钮字体?

ios - Gstreamer 1.2.3 (iOS) 上的 Videosink

objective-c - 我有什么方法可以检测我的应用程序是否已通过 Installous 下载?

ios - 设置导航 Controller 的委托(delegate)?

ios - 为什么 CGImageCreateWithImageInRect 使用带点的 CGRect 然后使用像素?

swift - 为什么我的 swift 计时器一直在加速?

ios - UserDefault 保存按钮状态

ios - 在 View 外检测 UITouch