【问题标题】:Customize title attributes of specific back button自定义特定后退按钮的标题属性
【发布时间】:2013-05-22 09:53:17
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 问题是,backBarButtonItem 属性本身就是nil!因此,将任何消息传递给它都不会产生任何影响。正如@βhargavḯ 指出的那样,这与文档一致。因此,在不使用 appearance API 的情况下,您可以在代码中创建具有所需自定义的 UIBarButtonItem 实例,并将其设置为后退按钮。

标签: ios uinavigationbar customization uibarbuttonitem


【解决方案1】:

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

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

【讨论】:

  • 这似乎是结合appearance API 最简单的方法。
【解决方案2】:

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

根据UINavigationItem Class Reference

如果您想为后退按钮指定自定义图像或标题, 您可以分配一个自定义栏按钮项目(使用您的自定义标题或 图像)改为此属性。配置条形按钮时 item,不要为其分配自定义视图;导航项忽略 无论如何,后栏按钮中的自定义视图。

【讨论】:

    猜你喜欢
    • 2020-01-07
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多