Ios Can';无法读取UITabBarItem外观上的titleTextAttributes

Ios Can';无法读取UITabBarItem外观上的titleTextAttributes,ios,swift,uikit,uiappearance,Ios,Swift,Uikit,Uiappearance,我正在设计我正在构建的应用程序的样式。我想对选项卡栏应用一些系统范围的样式(字体),然后在某些情况下设置颜色之类的样式。我遇到了两个问题: 在UITabBar实例上使用setTitleTextAttributes:forState:设置任何titleTextAttributes时,它会立即忽略在外观代理上设置的任何titleTextAttributes(包括未在实例上设置但在外观代理上设置的键) 为了修复(1),我只是想从外观代理复制titleTextAttributes,然后用我想要应用于实

我正在设计我正在构建的应用程序的样式。我想对选项卡栏应用一些系统范围的样式(字体),然后在某些情况下设置颜色之类的样式。我遇到了两个问题:

  • 在UITabBar实例上使用
    setTitleTextAttributes:forState:
    设置任何titleTextAttributes时,它会立即忽略在外观代理上设置的任何titleTextAttributes(包括未在实例上设置但在外观代理上设置的键)

  • 为了修复(1),我只是想从外观代理复制titleTextAttributes,然后用我想要应用于实例的任何属性覆盖它们。例如

    // AppDelegate
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        UITabBarItem.appearance().setTitleTextAttributes([
            NSFontAttributeName: UIFont(name: "Lato-Regular", size: 20.0)!
            ], forState: .Normal)
    }
    
    // Later on in a ViewController that has a UITabBar
    override func viewDidLoad() {
        var attributes = UITabBarItem.appearance().titleTextAttributesForState(state) ?? [NSObject: AnyObject]()
    
        assert(attributes.count > 0, "Could not read titleTextAttributes set on appearance proxy!")
    }
    
  • 这是最烦人的,因为您可以很好地读取UINavigationBar上的外观代理值

    有什么想法吗

    // AppDelegate
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        UITabBarItem.appearance().setTitleTextAttributes([
            NSFontAttributeName: UIFont(name: "Lato-Regular", size: 20.0)!
            ], forState: .Normal)
    }
    
    // Later on in a ViewController that has a UITabBar
    override func viewDidLoad() {
        var attributes = UITabBarItem.appearance().titleTextAttributesForState(state) ?? [NSObject: AnyObject]()
    
        assert(attributes.count > 0, "Could not read titleTextAttributes set on appearance proxy!")
    }