gpt4 book ai didi

ios - 添加 GeometryReader 后对齐方式发生变化

转载 作者:行者123 更新时间:2023-11-29 05:08:33 24 4
gpt4 key购买 nike

我的布局基本上如下所示:

ZStack(alignment: .bottom) {
GeometryReader { geometry in
ZStack {
Text("Centered")
}
.frame(width: geometry.size.width, height: geometry.size.height, alignment: .center)
.background(Color.red)
}
Group {
GeometryReader { geometry in // This GeometryReader is causing issues.
VStack {
Text("I want this at the bottom")
}
.frame(width: geometry.size.width, height: nil, alignment: .topLeading)
}
}
}

渲染时,两个 Text 元素都会渲染在屏幕中央。第二个文本元素的容器占据了屏幕的整个宽度,这是预期的。如果我删除有问题的 GeometryReader,则文本会正确呈现在屏幕底部,但显然框架未设置为屏幕的整个宽度。为什么会发生这种情况?

最佳答案

默认情况下,SwiftUI 容器紧贴内容,但 GeometryReader 会消耗最大的可用空间。因此,如果要删除第二个 GeometryReader,则 VStack 仅包装内部 Text

如果仍然需要保留第二个GeometryReader(读取宽度)并将文本放在底部,最简单的方法是添加Spacer如下

enter image description here

Group {
GeometryReader { geometry in
VStack {
Spacer()
Text("I want this at the bottom")
}
.frame(width: geometry.size.width, height: nil, alignment: .topLeading)
}
}

如何将 View 固定在底部的替代方法,您可以在我这篇文章的回答中找到Position view bottom without using a spacer

关于ios - 添加 GeometryReader 后对齐方式发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59915446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com