一尘不染

UIControlState.Normal不可用

swift

此前的UIButton情况下,你能够传递UIControlState.NormalsetTitlesetImage
.Normal不再可用,我应该怎么用呢?

let btn = UIButton(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
btn.setTitle("title", for: .Normal) // does not compile

(这是一个规范的Q&一对,以防止与此相关的重复的问题洪水UIButtonUIControl变化与iOS 10和SWIFT 3)


阅读 309

收藏
2020-07-07

共1个答案

一尘不染

Swift 3更新:

看来Xcode 8 / Swift 3带UIControlState.normal回来了:

public struct UIControlState : OptionSet {

    public init(rawValue: UInt)


    public static var normal: UIControlState { get }

    public static var highlighted: UIControlState { get } // used when UIControl isHighlighted is set

    public static var disabled: UIControlState { get }

    public static var selected: UIControlState { get } // flag usable by app (see below)

    @available(iOS 9.0, *)
    public static var focused: UIControlState { get } // Applicable only when the screen supports focus

    public static var application: UIControlState { get } // additional flags available for application use

    public static var reserved: UIControlState { get } // flags reserved for internal framework use
}

UIControlState.Normal已重命名为UIControlState.normaliOS SDK和从iOS
SDK中删除。对于“普通”选项,请使用一个空数组来构造一个空选项集。

let btn = UIButton(frame: CGRect(x: 0, y: 0, width: 20, height: 20))

// Does not work
btn.setTitle("title", for: .Normal) // 'Normal' has been renamed to 'normal'
btn.setTitle("title", for: .normal) // 'normal' is unavailable: use [] to construct an empty option set

// Works
btn.setTitle("title", for: [])
2020-07-07