You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UIKit:如何在导航栏添加纯文本(无需按钮行为)?

在UIKit导航栏添加无交互文本的方法

核心方案:用自定义UILabel包装成UIBarButtonItem

你不需要使用带按钮行为的UIBarButtonItem,可以直接把UILabel作为自定义视图包装成UIBarButtonItem,这样就只显示文本,不会触发点击响应。代码示例:

// 创建得分标签
let scoreLabel = UILabel()
scoreLabel.text = NSLocalizedString("Score: \(score)", comment: "")
scoreLabel.textColor = .label // 自动适配明暗模式
scoreLabel.font = UIFont.systemFont(ofSize: 16, weight: .semibold)
// 将标签包装成BarButtonItem
let scoreBarItem = UIBarButtonItem(customView: scoreLabel)
// 放到导航栏右侧
navigationItem.rightBarButtonItem = scoreBarItem

关于类似SwiftUI的ToolbarItem位置

UIKit没有完全对应SwiftUIToolbarItemPlacement的枚举,但可以通过navigationItem的属性实现相同效果:

  • 对应.navigationBarTrailing:使用navigationItem.rightBarButtonItem或rightBarButtonItems(支持添加多个视图)
  • 对应.navigationBarLeading:使用navigationItem.leftBarButtonItem或leftBarButtonItems
  • 对应导航栏中间:使用navigationItem.titleView设置自定义视图

为什么Storyboard添加UITextView失败?

导航栏的内容不能直接通过拖放视图到Storyboard导航栏的方式配置,必须通过UINavigationItem来设置。如果想用Storyboard,可以先添加一个Bar Button Item,再在代码里将它的customView替换为文本视图,不过纯代码方式会更灵活。

补充:动态更新得分的方法

如果需要实时更新得分,直接修改scoreLabel的text属性即可:

scoreLabel.text = NSLocalizedString("Score: \(newScore)", comment: "")

内容的提问来源于stack exchange,提问作者Nizami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 17:55:47