【发布时间】:2020-04-22 11:09:37
【问题描述】:
我对 SwiftUI 有疑问。当我在另一个 VStack 中使用多个 VStacks 时,我遇到了文本截断的奇怪问题。
这是最小的可重现示例:
“B”标签被截断,但它不应该被截断。如果我通过添加或删除一些字母来更改“A”文本或“B”文本,“B”标签有时会出错,有时会正常。
下面是对应的代码:
struct ContentView: View {
var body: some View {
VStack {
VStack {
Text("AAAAAAAAAAAAAAAAAAAA")
}.background(Color.yellow)
VStack {
Text("BBBBBBBB")
Text("CCC")
}.background(Color.orange)
}.background(Color.blue)
}
}
我错过了什么还是这是 SwiftUI 的一个错误?
谢谢!
环境:Xcode 11.4.1、iOS 13.4.1,在预览版、模拟器和设备上测试
编辑:根据您使用的预览/模拟器设备,其行为会有所不同。例如,上面的代码,复制粘贴到一个新项目中,在 iPhone 11 Pro / 11 Pro Max 和 8+ 上是错误的。在 iPhone 8 / 11 / SE 1&2 上,这工作正常。那么可能与 SwiftUI 布局引擎中的一些计算/舍入问题有关?
【问题讨论】:
-
你能在模拟器上检查一下应用程序的运行情况吗?我检查了一个 XCODE 11.3,它工作得很好
-
@Manoj 在模拟器和设备上同样的问题。所以也许这是 Xcode 11.4 的回归?您是否尝试添加/删除一些 A 和 B?
-
在 Xcode 11.4.1 和 iOS 13.4.1 上运行良好
-
它看起来确实像一个错误。仅当您添加/删除一个字符达到 20 个时才会发生这种情况。
-
@staticVoidMan 其实好像和字数没有关系,而是跟标签的宽度有关。如果您将所有大写字母(A、B 和 C)替换为它们的小写版本(a、b 和 c),则在添加/删除字母时会更频繁地出现此问题。