2

只要您不使用操作系统提供的任何 UI 元素(例如MFMailComposeViewController类),外观代理就很有用。为此,我需要自定义导航栏中的条形按钮项,尤其是后退按钮

问题是什么?在修改后退按钮的标题属性时,这似乎有问题。关于自定义后退按钮已经写了很多,但我似乎找不到关于修改后退按钮的标题属性(文本颜色、阴影颜色等)的信息(不使用外观代理)。

我尝试了什么?backBarButtonItem如下所示设置属性的标题属性。如果我在子视图控制器或父视图控制器中执行此操作并不重要。这适用于leftBarButtonItem和 `rightBarButtonItem' 项目,这让我感到困惑。

[self.navigationItem.backBarButtonItem setTitleTextAttributes:titleAttributes forState:UIControlStateNormal];

当然,使用外观代理也可以正常工作(见下文),但这会扰乱操作系统提供的导航栏,如上所述。

[[UIBarButtonItem appearance] setTitleTextAttributes:titleAttributes forState:UIControlStateNormal];
4

2 回答 2

2

仅当 UIBarButtonItems 存在于特定视图层次结构中时,您才能定位它们的外观。因此,您可以创建 UINavigationController 的子类,例如 MyNavigationController 并执行以下操作:

[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], [MyNavigationController class], nil] setTitleTextAttributes:titleAttributes forState:UIControlStateNormal];

于 2013-05-22T11:00:28.123 回答
1

我似乎找不到关于修改后退按钮的标题属性(文本颜色、阴影颜色等)的信息——当然你不会找到。

根据UINavigationItem 类参考

如果要为后退按钮指定自定义图像或标题,则可以将自定义栏按钮项(带有自定义标题或图像)分配给此属性。在配置你的 bar button item 时,不要为其分配自定义视图;导航项无论如何都会忽略后退栏按钮中的自定义视图。

于 2013-05-22T10:04:12.140 回答