gpt4 book ai didi

swift - 如何使用位掩码在 Swift 2.2 中自定义 UIControlState?

转载 作者:行者123 更新时间:2023-11-28 06:35:50 24 4
gpt4 key购买 nike

我有一个自定义的 UIButton,它具有一些我希望它具有的独特状态,例如:

enum PositionControlState : Int {
case Available = 0, Pending, Waiting, Approved, Declined
}

我做了一些谷歌搜索,发现了一些关于位掩码和 Objective-c 中的 UIControlState.Application 的内容。我觉得我有一些拼图,但不太确定如何在 swift 2.2 中将它们组合在一起。

最佳答案

我不确定你是否解决过这个问题,但我做类似事情的方式是这样的。

extension UIControlState {
static let available = UIControlState(rawValue: 1 << 5)
static let pending = UIControlState(rawValue: 1 << 6)
static let waiting = UIControlState(rawValue: 1 << 7)
}

class Button: UIButton {
private var isAvailable = false
private var isPending = false
private var isWaiting = false

private func aFuncCalledWhenPending() {
isPending = true
}

override var state: UIControlState {
var s = super.state

if isAvailable {
s.insert(.available)
}
if isPending {
s.insert(.pending)
}
if isWaiting {
s.insert(.waiting)
}

return s
}
}

这将允许您编写代码,例如 button.setTitleColor(.red, for: .pending)

这种方法的问题是您的附加状态对于接受 UIControlState 的所有函数都是公开可见的。类似于 UIControlEvents 有很多状态,但其中一些只用于特定类。

请记住,如果您继续采用这种方法,您包含的其他状态应保留在“控制状态”的相同上下文定义中。

关于swift - 如何使用位掩码在 Swift 2.2 中自定义 UIControlState?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39111041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com