只要您不使用操作系统提供的任何UI元素(例如MFMailComposeViewController
类),外观代理就很有用。出于这个原因,我需要自定义导航栏中的条形按钮项目,特别是后退按钮。
有什么问题?在修改后退按钮的标题属性时,这似乎有问题。关于customizing the back button已经写了很多,但我似乎无法找到有关修改后退按钮的标题属性(文本颜色,阴影颜色等)的信息(而不使用外观代理)。
我尝试了什么?设置backBarButtonItem
属性的标题属性,如下所示。如果我在子视图控制器或父视图控制器中执行此操作并不重要。这适用于leftBarButtonItem
和`rightBarButtonItem'项目,这让我感到困惑。
[self.navigationItem.backBarButtonItem setTitleTextAttributes:titleAttributes forState:UIControlStateNormal];
当然,使用外观代理也可以正常工作(见下文),但这会混淆操作系统提供的导航栏,如上所述。
[[UIBarButtonItem appearance] setTitleTextAttributes:titleAttributes forState:UIControlStateNormal];
答案 0 :(得分:2)
只有当UIBarButtonItem存在于特定视图层次结构中时,才能将其定位。所以你可以创建一个UINavigationController的子类,比如说MyNavigationController并执行:
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], [MyNavigationController class], nil] setTitleTextAttributes:titleAttributes forState:UIControlStateNormal];
答案 1 :(得分:1)
我似乎无法找到有关修改后退按钮的标题属性(文本颜色,阴影颜色等)的信息 - 当然你找不到。
根据UINavigationItem Class Reference
如果要为后退按钮指定自定义图像或标题, 您可以指定自定义栏按钮项(使用您的自定义标题或 而不是这个属性。配置栏按钮时 item,不要为其分配自定义视图;导航项忽略 无论如何,后栏按钮中的自定义视图。