配置对象时,`UIControlState()` 和 `UIControlState.normal` 有什么区别

Whats the difference between `UIControlState()` and `UIControlState.normal` when configuring an object

我经常看到 UIControlState.normal 被使用,例如在 UIButton 对象上设置 titleColor 将在所有控制状态中使用,如 UIButton. setTitleColor 文档说:

In general, if a property is not specified for a state, the default is to use the normal value. If the normal value is not set, then the property defaults to a system value. Therefore, at a minimum, you should set the value for the normal state.

但我也发现 UIControlState.init() 被使用,例如以下行:

UIButton.setTitleColor(UIColor, for: UIControlState())

想知道它有何不同,提前致谢!

刚刚在console中发现,UIControlState().normal是相等的,所以没有区别

UIControlState.normal是代表"normal"状态的具体控制状态。

UIControlState() 是一个 "empty" 控制状态,带有一些未记录的默认值。

碰巧这两个都由 0 的原始值支持。所以看起来两者都代表了"normal"状态。

但是依赖这个是不好的做法。默认值可能会更改。最好使用提供的具体的、明确记录的值。

始终使用 UIControlState.normal 作为 "normal" 状态。切勿使用 UIControlState(),因为它的值未记录并且无法保证它始终具有与 UIControlState.normal.

相同的基础值