首页 > 解决方案 > NavigationBarTitle 不会使用 minimumScaleFactor() 或 allowTightening() 缩小文本

问题描述

在 NavigationView 上使用 .navigationBarTitle 时,添加修饰符 .minimumScaleFactor(0.5) 或 .allowsTightening(true) 无效。文本仍被截断并保持相同大小。

我的应用程序在导航栏标题中显示参考代码和一些其他信息,它非常适合大尺寸 iPhone,但在较小屏幕的 iPhone 上会被修剪(...)。这些信息对于应用程序的运行非常重要,而且我们的屏幕空间已经不足,所以真的没有其他地方可以放置这些信息。

使用 UIKit,我会创建一个特殊的 TitleView 来替换 NavigationBar 中的标题文本,但这在 SwiftUI 中不起作用。

有什么解决方法吗?

例子:

struct ContentView: View {
  let items = ["Chocolate", "Vanilla", "Strawberry", "Mint Chip",
               "Pistachio"]
  let title = "A long title that doesn't fit on a standard iPhone"
  var body: some View {
    NavigationView {
      List(items, id: \.self) {
        Text($0)
      }
      .navigationBarTitle(title, displayMode: .inline).minimumScaleFactor(0.5).allowsTightening(true)
    }
  }
}

iPhone 8 Plus 的截图: iPhone 8 Plus 的截图

iPhone 8 截图: iPhone 8 截图

标签: iosswiftui

解决方案


推荐阅读