这可能是一个简单的问题,但我一直在努力。
假设我在 SwiftUI 中有以下视图布局
我希望日期字符串10.5.2020
在父 VStack 中右对齐。
但重要的是,这样做不会破坏 VStack 的固有大小。
我之所以这么说,是因为最明显的两个解决方案都是这样做的。
- 用 围起来,并在左边
HStack
放一个。Spacer
- 使用框架
maxWidth: .infinity
和alignment: .trailing
我对对齐指南进行了更深入的研究,但无法解决这个问题。
到目前为止我的最佳结果是GeometryReader
,将文本标签的宽度设置为几乎与周围 VStack 的宽度相同。
但不幸的是,我的目标结构要复杂得多,这种方法会导致该结构出现问题。而且GeometryReader
似乎不适合进行对齐。
struct ContentView: View {
var body: some View {
ScrollView {
VStack(alignment: .leading) {
HStack {
VStack(alignment: .leading) {
Text("Alignment Test")
Text("This is a longer text left aligned")
Text("10.5.2020")
}
.padding(16)
.background(Color.blue)
Spacer(minLength: 50)
}
HStack {
VStack(alignment: .leading) {
Text("left")
Text("Date should rigzht align to here <-")
Text("10.5.2020")
}
.padding(16)
.background(Color.blue)
Spacer(minLength: 50)
}
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.border(.red)
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(Color.gray.opacity(0.5))
}
}
预览: