UIControlState.Normal недоступен

Раньше для экземпляров UIButton вы могли пройти в UIControlState.Normal для setTitle или setImage . .Normal больше не доступен, что я должен использовать вместо этого?

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

(Это каноническая Q & A пара, чтобы предотвратить поток дублированных вопросов, связанных с UIButton изменениями UIButton и UIControl с iOS 10 и Swift 3)

Обновление 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.normal и удален из SDK iOS. Для параметров «Обычный» используйте пустой массив для создания пустого набора опций.

 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: []) 

.Normal (iOS 10 DP1), вы можете использовать [] или UIControlState(rawValue: UInt(0)) для замены .Normal , если вы не хотите менять коды повсюду (в случае, если яблоко добавит его снова или вам не нравится [] ), вы можете просто добавить этот код

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

или

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

то вся .Normal работа как раньше.

Apple вернула нормальное состояние управления в более поздних версиях Xcode beta. Обновите последнюю бета-версию Xcode и используйте .normal .

Interesting Posts
Давайте будем гением компьютера.