ios - SwiftUI:如何在容器视图中垂直和水平居中并在其下放置一些东西
问题描述
我搜索了stackoverflow,但不幸的是没有找到解决这种特殊情况的方法。
我尝试显示以下场景:
- 容器视图
- 在该容器视图中水平和垂直居中的文本
- 位于此居中文本下方的文本
无论我尝试什么,我都无法在容器视图中水平和垂直地居中该 Text 并在其下方放置一些东西,而不会将其放在容器视图的中心之外。
为了更好地理解,我在故事板中描绘了这种行为:
如果有人能帮我在 SwiftUI 中编写这个场景,那就太好了!:)
解决方案
这是我更喜欢的可能方法(至少在开始时),因为两个标签都保持独立,并且始终以主要文本在父容器中居中。
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 处(实际上与您问题中的约束相同)。
推荐阅读
- express - Stripe Connect,快递收据中的公司名称错误
- r - 如何获得矩阵的最高 p 值?
- mysql - MySQL 5.7 将 JSON 字符串的值连接成一个字符串
- html - CSS从中心旋转文本
- openssl - OpenSSL椭圆曲线以DER形式读取私钥
- ios - Flutter 调试:警告:未安装 CocoaPods。跳过 pod 安装
- gcc - 构建快速 RCNN 时的 GCC 链接错误
- javascript - 如何使用 javascript 根据星期几显示短信?
- html - 防止或反转 CSS 旋转应用于子元素
- python - 在多对多 django 应用程序中显示的所有记录