使用多个导航栏视图自定义 UIBarButtonItem 外观
Posted
技术标签:
【中文标题】使用多个导航栏视图自定义 UIBarButtonItem 外观【英文标题】:Customizing UIBarButtonItem apperance with multiple UINavigationBar views 【发布时间】:2014-10-23 21:55:27 【问题描述】:我正在使用这个:
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationController class], nil]
setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
color ,NSForegroundColorAttributeName,
FONT(FONT_REGULAR, 15.0f), NSFontAttributeName,
nil] forState:UIControlStateNormal];
在viewWillAppear:
方法上为UINavigationController
中的按钮设置颜色。
我的应用程序有 5 个主要视图,每个视图都有 UINavigationController
分组在 UITabBar
下。
问题是当我在UITabBar
视图之间切换时,它会发疯,它总是将最后初始化的视图颜色应用于所有其他视图。当我使用适当的参数进行更改时,我三重检查代码正在运行,它对现有按钮没有影响。
有没有其他方法可以为不同的UINavigationController
s 分别设置颜色?
【问题讨论】:
【参考方案1】:不要使用appearanceWhenContainedIn:
方法,它会改变一个类的所有实例的外观。在你的情况下,这个类是UIBarButtonItem
。而且您一次又一次地在viewWillAppear:
方法上执行此操作,这会导致更改所有UIBarButtonItem
对象的颜色。
这个问题回答了你的问题:
ios 6 appearance when contained in multiple classes
编辑:
作为一种解决方案,您可以将tintColor
属性用于精确的UIBarButtonItem
对象。
myBarButtonItem.tintColor = [UIColor blueColor];
【讨论】:
但我想一次又一次地改变它,只是为了不同标签上的不同颜色。我该如何改变呢? 对精确的 UIBarButtonItem 对象使用 tintColor 属性以上是关于使用多个导航栏视图自定义 UIBarButtonItem 外观的主要内容,如果未能解决你的问题,请参考以下文章