web-dev-qa-db-fra.com

UIAppearance Swift 4

Après la mise à jour vers Swift 4, je reçois une erreur de compilation:

Static member 'appearance' cannot be used on protocol metatype 'UIAppearance.Protocol'

Voici ma méthode viewWillAppear dans ma sous-classe de contrôleur de barre d'onglets personnalisée, je règle la police du texte de l'élément.

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    // compiler error on line below
    UIAppearance.appearance().setTitleTextAttributes([NSAttributedStringKey.font: font], for: UIControlState.normal)
}

J'ai du mal à résoudre ce problème, tout conseil serait apprécié, merci!

17
Eli Whittle

À droite - l'outil de conversion Swift 4 actuel (à partir de Xcode 9 Beta 4) est un peu emporté.

J'ai pu résoudre le problème rapidement en rétablissant le code de conversion UIAppearance, puis en mettant à jour les attributs individuels.

Par exemple, en Swift 3 j'avais:

UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.white], for: .selected)

Xcode m'a "aidé" en le changeant en:

UIAppearance.appearance().setTitleTextAttributes([NSAttributedStringKey.foregroundColor: UIColor.white], for: .selected)

J'ai pu calmer les erreurs en revenant à moitié, pour:

UITabBarItem.appearance().setTitleTextAttributes([NSAttributedStringKey.foregroundColor: UIColor.white], for: .selected)
33
Justin Whitney