layout - 如何水平居中作为 SwiftUI 中视图组一部分的视图
问题描述
我正在尝试在屏幕底部水平布局两组标签(“<<”,“<”,“^”,“”,“>>”,“[]”)和(“M”)使用 SwiftUI 的约束条件是 ("M") 组位于屏幕的右下角,并且 ("<<","<","^",">",">>","[ ]") 组以“^”元素与屏幕的水平中心对齐的方式居中。
我试过这个:
VStack {
Spacer()
HStack {
Spacer()
Spacer()
HStack.init(spacing: 4) {
Text("<<")
Text("<")
Text("^") // this view should be aligned to horizontal center of screen
.padding([.leading, .trailing], 16)
Text(">")
Text(">>")
Text("[]")
.padding(.leading, 8)
}
Spacer()
Text("M")
.padding(2)
}
}
看起来像这样:
我不知道如何约束“^”与水平中心对齐。
使用自动布局我可以很容易地做到这一点,将“^”的 center-x 锚定到父 center-x 锚点,然后将其余元素锚定到“^”,其中“M”将锚定到底部- 右锚。
解决方案
一个简单的解决方案是在两侧使用相同长度的 Text 和 .hidden() 修饰符。
(我在这里使用Group,因为我超过10个限制视图)
VStack {
Spacer()
HStack {
Group {
Text("M").hidden()
Spacer()
Text("[]").hidden()
Text("<<")
Text("<")
}
Group {
Text("^")
Text(">")
Text(">>")
Text("[]")
Spacer()
Text("M")
}
}
}
推荐阅读
- laravel - 更新值时Laravel溢出
- jprofiler - 清除记录的 CPU 调用树
- android - 视觉文本检测导致多次调用 OnSuccessListener
- php - SSL 证书问题:无法获取本地颁发者证书
- php - 错误:安装 Mustache PHP Extension 错误
- java - Spring - 验证字段的字段
- elasticsearch - Elasticsearch-从单个 kibana 监控多个集群
- vba - 访问传递查询中的变量
- dart - Flutter showDialog、AlertDialog 背景渐变。
- javascript - 警报()javascript函数在php中不起作用