首页 > 解决方案 > SwiftUI:如何在容器视图中垂直和水平居中并在其下放置一些东西

问题描述

我搜索了stackoverflow,但不幸的是没有找到解决这种特殊情况的方法。

我尝试显示以下场景:

无论我尝试什么,我都无法在容器视图中水平和垂直地居中该 Text 并在其下方放置一些东西,而不会将其放在容器视图的中心之外。

为了更好地理解,我在故事板中描绘了这种行为:

在此处输入图像描述

如果有人能帮我在 SwiftUI 中编写这个场景,那就太好了!:)

标签: iosswiftxcodeswiftui

解决方案


这是我更喜欢的可能方法(至少在开始时),因为两个标签都保持独立,并且始终以主要文本在父容器中居中。

演示

struct DemoCenteredText: View {
    var body: some View {
        GeometryReader { gp in
            ZStack {
                Text("Primary Text").font(.title)
                    .alignmentGuide(VerticalAlignment.center, computeValue: { $0[.bottom] })
                    .position(x: gp.size.width / 2, y: gp.size.height / 2)
                Text("Secondary Text")
                    .alignmentGuide(VerticalAlignment.center, computeValue: { $0[.top] - 16 })
            }
        }
    }
}

上面的内容.position修复了父容器中心的主标题,可用空间被 消耗GeometryReader,并alignmentGuide强制布局将辅助文本放置在从主文本底部偏移 16 处(实际上与您问题中的约束相同)。


推荐阅读