加载后是不是可以更改 UITabBarController 文本颜色?

Posted

技术标签:

【中文标题】加载后是不是可以更改 UITabBarController 文本颜色?【英文标题】:Is it possible to change a UITabBarController text color after it's been loaded?加载后是否可以更改 UITabBarController 文本颜色? 【发布时间】:2017-02-22 05:12:15 【问题描述】:

我想在 UITabBarControllers 文本颜色加载后根据用户的操作更改它。

我可以调用它,它会在启动时正确更改字体和颜色。

 let appearance = UITabBarItem.appearance()
 let attributes: [String: AnyObject] = [NSFontAttributeName:UIFont(name: "American Typewriter", size: 12)!, NSForegroundColorAttributeName: UIColor.green]
 appearance.setTitleTextAttributes(attributes, for: .normal)

当我在应用程序完全启动后的任何时候尝试调用它时,什么都没有发生。

这可能吗,还是您可以在发布时一次性完成?

【问题讨论】:

你能用UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.redColor()], forState: .Selected)检查或正常状态做.Normal 或与tabBarController.tabBar tintColor 确认 你应该试试这个 - ***.com/questions/31117069/… 以这种方式设置色调颜色,但我不想更改色调颜色,我想更改正常的字体颜色。我尝试了 UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.red], for: .normal) ,它在加载后调用 .normal 和 .selected 时没有任何作用。它确实可以预加载。我将仔细查看该堆栈链接,但所有这些似乎都是关于在加载或处理图像之前进行设置? 【参考方案1】:

看起来如果我遍历所有项目并手动设置它们就可以了。然后我需要重新设置所选项目的颜色。

仍然不确定为什么其他方式行不通?

for myItem in (tabBar.items)! 
    myItem.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.red], for: .normal)


tabBar.selectedItem?.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.green], for: .normal)

【讨论】:

以上是关于加载后是不是可以更改 UITabBarController 文本颜色?的主要内容,如果未能解决你的问题,请参考以下文章

更改应用程序主题时更改 UITabbar?

视图加载后是不是可以在工具栏上添加、删除或隐藏按钮?

HTML中控制checkbox默认选中后,点击后其状态也不可被更改(取消)?

更改 LayoutParams 对象的属性后,是不是需要再次调用 setLayoutParams?

如何检测 JavaScript 中的哈希后 URL 是不是已更改

Timepicker JS在加载后更改选项值