web-dev-qa-db-ja.com

UIAppearance Swift 4

Swift 4に更新した後、コンパイラエラーが発生します。

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

カスタムTab Bar ControllerサブクラスのviewWillAppearメソッドは次のとおりです。アイテムテキストのフォントを設定しています。

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

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

私はこれを修正するのに苦労しています、どんなガイダンスでも感謝します、ありがとう!

17
Eli Whittle

右-現在のSwift 4変換ツール(Xcode 9 Beta 4時点))は少し気になります。

UIAppearance変換コードを元に戻し、個々の属性を更新することにより、問題を迅速に修正することができました。

たとえば、Swift 3でした:

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

Xcodeは次のように変更することで「助けて」くれました。

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

私は半分に戻すことでエラーを静めることができました:

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