UIControlState.Normal is Unavailable

后端 未结 4 490
广开言路
广开言路 2020-12-06 05:56

Previously for UIButton instances, you were able to pass in UIControlState.Normal for setTitle or setImage. .Norma

相关标签:
4条回答
  • 2020-12-06 06:08

    Swift 3 update:

    It appears that Xcode 8/Swift 3 brought UIControlState.normal back:

    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 has been renamed to UIControlState.normal and removed from the iOS SDK. For "Normal" options, use an empty array to construct an empty option set.

    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: [])
    
    0 讨论(0)
  • 2020-12-06 06:11

    Apple brought back the normal control state in more recent versions of Xcode beta. Upgrade to the most recent Xcode beta and use .normal.

    0 讨论(0)
  • 2020-12-06 06:19

    Swift 5

    Replace from

    btn.setTitle("title", for: .Normal)
    

    to

    btn.setTitle("title", for: UIControl.State.normal)
    
    0 讨论(0)
  • 2020-12-06 06:27

    The .Normal is removed(iOS 10 DP1), you can use the [] or UIControlState(rawValue: UInt(0)) to replace the .Normal, if you don't want to change codes all around(in case apple add it again or you don't like the []), you can just add once this code

    extension UIControlState {
        public static var Normal: UIControlState { return [] }
    }
    

    or

    extension UIControlState {
        public static var Normal: UIControlState { return UIControlState(rawValue: UInt(0)) }
    }
    

    then all the .Normal work like before.

    0 讨论(0)
提交回复
热议问题