在 GeometryReader 中 ZStack 对齐不居中?
ZStack alignment not centered when in GeometryReader?
我有以下看法:
struct TestView: View {
var body: some View {
GeometryReader { geo in
ZStack(alignment: Alignment(horizontal: .center, vertical: .center)) {
Text("TEST TEXT")
}.background(Color.red)
}
}
}
呈现这个:
我希望 ZStack 中的视图居中,并且仅当我删除 GeometryReader
时才有效,如下所示:
struct TestView: View {
var body: some View {
ZStack(alignment: Alignment(horizontal: .center, vertical: .center)) {
Text("TEST TEXT")
}.background(Color.red)
}
}
呈现这个:
如何使用 GeometryReader
并使 ZStack 中的内容仍居中,如上面最后一张渲染图片所示?为什么 GeometryReader 会干扰 ZStack 内容对齐?
GeometryReader 对齐不断变化 - 请参阅 GeometryReader Discrepancies with Previous OS Versions。为了获得正常的行为,我通常只添加 .frame(maxWidth: .infinity, maxHeight: .infinity)
.
struct TestView: View {
var body: some View {
GeometryReader { geo in
ZStack { /// no need for the custom Alignment
Text("TEST TEXT")
}
.background(Color.red)
.frame(maxWidth: .infinity, maxHeight: .infinity) /// here!
}
}
}
结果:
我有以下看法:
struct TestView: View {
var body: some View {
GeometryReader { geo in
ZStack(alignment: Alignment(horizontal: .center, vertical: .center)) {
Text("TEST TEXT")
}.background(Color.red)
}
}
}
呈现这个:
我希望 ZStack 中的视图居中,并且仅当我删除 GeometryReader
时才有效,如下所示:
struct TestView: View {
var body: some View {
ZStack(alignment: Alignment(horizontal: .center, vertical: .center)) {
Text("TEST TEXT")
}.background(Color.red)
}
}
呈现这个:
如何使用 GeometryReader
并使 ZStack 中的内容仍居中,如上面最后一张渲染图片所示?为什么 GeometryReader 会干扰 ZStack 内容对齐?
GeometryReader 对齐不断变化 - 请参阅 GeometryReader Discrepancies with Previous OS Versions。为了获得正常的行为,我通常只添加 .frame(maxWidth: .infinity, maxHeight: .infinity)
.
struct TestView: View {
var body: some View {
GeometryReader { geo in
ZStack { /// no need for the custom Alignment
Text("TEST TEXT")
}
.background(Color.red)
.frame(maxWidth: .infinity, maxHeight: .infinity) /// here!
}
}
}
结果: