gpt4 book ai didi

ios - SwiftUI:VStack 中的 VStack,标签被截断

转载 作者:行者123 更新时间:2023-12-01 16:05:41 28 4
gpt4 key购买 nike

我有 SwiftUI 的问题。当我使用多个 VStack s 在另一个 VStack ,我在文本截断方面遇到了奇怪的问题。

这是最小的可重现示例:

VStacks inside VStack

“B”标签被截断,但它不应该被截断。如果我通过添加或删除一些字母来更改“A”文本或“B”文本,“B”标签有时会出错,有时会正常。

VStacks animation

下面是对应的代码:

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 布局引擎中的一些计算/舍入问题有关?

最佳答案

.fixedSize(horizontal: true, vertical: false)应该修复它。

struct ContentView: View {
var body: some View {
VStack {
VStack {
Text("AAAAAAAAAAAAAAAAAAAA")
.fixedSize(horizontal: true, vertical: false)
}.background(Color.yellow)
VStack {
Text("BBBBBBBB")
.fixedSize(horizontal: true, vertical: false)
Text("CCC")
.fixedSize(horizontal: true, vertical: false)
}.background(Color.orange)
}.background(Color.blue)
}
}

对于多行文本: .fixedSize(horizontal: false, vertical: true)
struct ContentView2: View {
var body: some View {
VStack {
VStack {
Text("Swift enums are really powerful, but they can often be made even more capable when mixed with")
.fixedSize(horizontal: false, vertical: true)
.multilineTextAlignment(.center)
}.background(Color.yellow)
VStack {
Text("Swift enums are really powerful, but they can often be made even more capable when mixed ")
.fixedSize(horizontal: false, vertical: true)
.multilineTextAlignment(.center)
Text("Swift enums are really powerful, but they can often be made even more capable ")
.fixedSize(horizontal: false, vertical: true)
.multilineTextAlignment(.center)
}.background(Color.orange)
}.background(Color.blue)
}
}

struct ContentView2_Previews: PreviewProvider {
static var previews: some View {
ContentView2()
}
}

关于ios - SwiftUI:VStack 中的 VStack,标签被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61363653/

28 4 0