SwiftUI - IOS 15 - 文本 .mimimumScaleFactor - 始终被应用

SwiftUI - IOS 15 - Text .mimimumScaleFactor - always being applied

找不到关于此问题的任何文档。

我的一个应用程序有一个带有 .minimumScaleFactor(0.5) 的文本视图。这在 iOS 14.0.* 中完美运行 - 当文本比视图宽时,它的比例很好地适合 - IE 填充屏幕的整个宽度。

不幸的是,在 iOS 15 中,无论内容大小如何,似乎都会应用 .minimumScaleFactor。不需要缩放以适合的字符串正在按比例缩小。

这是未记录的更改吗?有没有我不知道的新方法来处理这个问题?

代码如下:

var body: some View {

    VStack() {

        HStack() {

            Text(supplier.name ?? "Unknown Supplier")
                .font(.title)
                .lineLimit(1)
                .allowsTightening(true)
                .minimumScaleFactor(0.5)

            Button(action: {}) {

            Image(systemName: "star.fill")
                .imageScale(.large)

            }

        }

    }

}

如有任何帮助,我们将不胜感激。

编辑 - 这似乎只是某些 iPhone 上的问题 - iPhone SE(第 2 代)iOS 15.

的初始测试

使用 .fixedSize 将视图设置为固定对我有用。

你的情况:

  Text(supplier.name ?? "Unknown Supplier")
            .font(.title)
            .fixedSize(horizontal: false, vertical: true)
            .lineLimit(1)
            .allowsTightening(true)
            .minimumScaleFactor(0.5)

文档: https://developer.apple.com/documentation/swiftui/menu/fixedsize(horizontal:vertical:)

在我的例子中,该行为植根于包装器视图。一旦我强迫它占据所有剩余的水平 space,内部 (auto-shrinking) 文本开始按预期工作。

HStack {
    VStack {
        Text("Big")
            .lineLimit(1)
            .minimumScaleFactor(0.01)
        Text("Small")
    }
}
    .frame(maxWidth: .infinity) // 

不过,同样的代码在不同 iOS 运行时的工作方式不同,这还是有点令人不安。