setTitleTextAttributes 在 swift 中未选中时不适用于 UITabBarItem
Posted
技术标签:
【中文标题】setTitleTextAttributes 在 swift 中未选中时不适用于 UITabBarItem【英文标题】:setTitleTextAttributes doesn't work for UITabBarItem when it is unselected in swift 【发布时间】:2015-01-28 17:00:31 【问题描述】:我正在尝试自定义我的UITabBarController
。我将它嵌入到我的UIViewController
中,我还为此UITabBarController
创建了一个类。
override func viewDidLoad()
super.viewDidLoad()
//custom tab bar
self.tabBar.barTintColor = UIColor(red: 0.0/255.0, green: 102.0/255.0, blue: 153.0/255.0, alpha: 1)
self.tabBar.tintColor = UIColor(red: 171.0/255.0, green: 203.0/255.0, blue: 61.0/255.0, alpha: 1)
self.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.whiteColor()], forState:UIControlState.Normal)
self.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.whiteColor()], forState:UIControlState.Disabled)
for item in self.tabBar.items as [UITabBarItem]
item.image = item.selectedImage.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
// Do any additional setup after loading the view.
setTitleTextAttributes
对标签栏项目没有任何影响。有人可以帮我找出错误在哪里吗?
【问题讨论】:
【参考方案1】:这是在这种情况下仍然可以放在 UITabBarController 中的代码:
override func viewDidLoad()
super.viewDidLoad()
//custom tab bar
self.tabBar.barTintColor = UIColor(red: 0.0/255.0, green: 102.0/255.0, blue: 153.0/255.0, alpha: 1)
self.tabBar.tintColor = UIColor(red: 171.0/255.0, green: 203.0/255.0, blue: 61.0/255.0, alpha: 1)
for item in self.tabBar.items as [UITabBarItem]
item.image = item.selectedImage.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
item.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.whiteColor()], forState:UIControlState.Normal)
item.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.whiteColor()], forState:UIControlState.Disabled)
item.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor(red: 171.0/255.0, green: 203.0/255.0, blue: 61.0/255.0, alpha: 1)], forState:UIControlState.Selected)
【讨论】:
对我来说,barTintColor 和 tintColor 的 tint color 为正常发挥了作用。谢谢【参考方案2】:标签栏项目属于各个子视图控制器,因此您需要更改这些控制器中的属性,而不是标签栏控制器。
【讨论】:
我试图在viewdidload中更改控制器中的属性,当1°视图加载时,2°的标签栏项目仍然是ios默认颜色,即灰色,只有当我点击2° 视图其标签栏项目设置为正确的颜色。您能否更详细地解释一下我必须将代码放在哪里? @Chongzl,将代码放在 awakeFromNib 中。 viewDidLoad 不会在除第一个控制器之外的任何控制器上调用,直到您单击它们的选项卡。以上是关于setTitleTextAttributes 在 swift 中未选中时不适用于 UITabBarItem的主要内容,如果未能解决你的问题,请参考以下文章
iOS 10.3 UISegmentedControl setTitleTextAttributes 崩溃
UITabBar 设置字体的颜色(选中状态/正常状态)setTitleTextAttributes
UIBarButtonItem 外观 setTitleTextAttributes 不影响 UIControlStateDisabled 状态
UITabBarItem 外观 -setTitleTextAttributes 不断记录“状态 = 1 被解释为 UIControlStateHighlighted”?