如何更改 UINavigationItem 字体?

Posted

技术标签:

【中文标题】如何更改 UINavigationItem 字体?【英文标题】:How to change UINavigationItem font? 【发布时间】:2015-03-01 16:07:19 【问题描述】:

我正在尝试将font 属性更改为UINavigationItem

我尝试过使用titleTextAttributes,但不知何故我只能更改标题字体。

如何更改字体或 UINavigationItem ?例如,Back UIButton 的“更多”文本如下所示:

我尝试过使用:

self.navigationController?.navigationBar.titleTextAttributes = [
            NSForegroundColorAttributeName: UIColor.blackColor(),
            NSFontAttributeName: UIFont(name: "Papyrus", size: 18)!
        ]

但它只会改变图片上显示的内容,而不是“更多”按钮的字体。

【问题讨论】:

【参考方案1】:

您的方法不起作用的原因是因为您只使用titleTextAttributes = ... 而必须使用setTitleTextAttributes:forState: 我使用此功能为我的整个项目全局自定义导航栏:

func customizeNavBar(_ color: UIColor, titleFont: UIFont, buttonFont: UIFont) 

    UINavigationBar.appearance().tintColor = color
    UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: color, NSFontAttributeName: titleFont]
    UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: color, NSFontAttributeName: buttonFont], forState: UIControlState.Normal)

对于单个实例,调用相同的函数:

someBarButton.tintColor.setTitleTextAttributes([NSForegroundColorAttributeName: color, NSFontAttributeName: buttonFont], forState: UIControlState.Normal)

【讨论】:

这会更改所有按钮的字体,我只需要为特定类/导航控制器中的一个更改它 然后你在 UINavigationBar 的实例上调用相同的函数而不是 UINavigationBar.appearance()(大概是 navigationController.navigationBar)答案更新 我已经尝试过了,但我收到一个错误“UINavigationItem 没有名为 setTitleTextAttributes 的成员。navigationBar 也没有......我只能使用我在我的初始帖子.. : 没关系,我在里面使用的是 NavigationItem 而不是 BarItem :) 现在可以使用了,谢谢! 我只需要更改导航标题颜色和标题字体,导航项上没有任何按钮。在哪里应用这个功能以及如何使用它'【参考方案2】:

斯威夫特 4

UIBarButtonItem.appearance().setTitleTextAttributes([NSAttributedStringKey.font: UIFont(name: "Helvetica-Bold", size: 15)!], for: .normal)

【讨论】:

【参考方案3】:

适用于 ios 13 和 Swift 5。

用于设置栏按钮项文本颜色和字体:

UIBarButtonItem.appearance().setTitleTextAttributes([
    .foregroundColor: UIColor.white, 
    .font: UIFont(name: GetFontNameBold(), size: 40)! ],
    for: UIControl.State.normal)

要设置标题颜色和字体,只需在 viewDidLoad() 中添加以下行:

UINavigationBar.appearance().titleTextAttributes = [
    .foregroundColor: UIColor.white, 
    .font: UIFont(name: "Arial", size: 24)! ]

【讨论】:

【参考方案4】:

如果您有插座,请这样做:

titleItem.titleLabel.font = UIFont(name: NAME, size: SIZE)

【讨论】:

以上是关于如何更改 UINavigationItem 字体?的主要内容,如果未能解决你的问题,请参考以下文章

无法更改 UINavigationItem 中 UIButton 的标题

处理容器控制器中子视图控制器的 UINavigationItem 更改的最佳实践?

UINavigationItem 上的 touchUpInside 事件

UINavigationItem 的背景颜色

无法以编程方式设置 UINavigationItem 标题

如何使用外观代理设置 UINavigationItem 的 backBarButtonItem?