这可能是一个简单的案例,但我找不到解决方案。
这是我的代码,使用 GeometryReader 设置 SwiftUI 视图大小的相对布局,如 Image。在最后一个 VStack 上的问题,我想将 Text 的背景转到 VStack 的右端。因此,我将其设置为Text("Haibo: asdasd").frame(maxWidth: .infinity)
但之后我发现文本变为水平居中并且不遵循 VStack 对齐:.leading。
import SwiftUI
struct ContentView: View {
var body: some View {
GeometryReader { geo in
HStack(alignment: .top, spacing: 12) {
Image("Alan shore").resizable().frame(width: geo.size.width / 6, height: geo.size.width / 6).cornerRadius(4)
VStack(alignment: .leading, spacing: 10) {
// name
Text("Haibo")
// content
Text("Think ThinkThink ThinkThink ThinkThink ThinkThink ThinkThink ThinkThink ThinkThink Think")
// 九宫格
VStack(spacing: 6) {
HStack(spacing: 6) {
Image("Little girl").resizable().frame(width: geo.size.width / 4.7, height: geo.size.width / 4.7)
Image("Little girl").resizable().frame(width: geo.size.width / 4.7, height: geo.size.width / 4.7)
Image("Little girl").resizable().frame(width: geo.size.width / 4.7, height: geo.size.width / 4.7)
}
HStack(spacing: 6) {
Image("Little girl").resizable().frame(width: geo.size.width / 4.7, height: geo.size.width / 4.7)
Image("Little girl").resizable().frame(width: geo.size.width / 4.7, height: geo.size.width / 4.7)
Image("Little girl").resizable().frame(width: geo.size.width / 4.7, height: geo.size.width / 4.7)
}
HStack(spacing: 6) {
Image("Little girl").resizable().frame(width: geo.size.width / 4.7, height: geo.size.width / 4.7)
Image("Little girl").resizable().frame(width: geo.size.width / 4.7, height: geo.size.width / 4.7)
Image("Little girl").resizable().frame(width: geo.size.width / 4.7, height: geo.size.width / 4.7)
}
}
// Time, Action
HStack {
Text("5 hour ago")
Spacer()
Image("moment-action")
}
// Comment
VStack(alignment: .leading) {
Text("Haibo: asdasd").frame(maxWidth: .infinity)
Text("Jobs: WDC WDC WDC WDCWWWWW")
} //.padding(.init(top: 6, leading: 6, bottom: 6, trailing: 12))
.background(Color.yellow)
.cornerRadius(3)
}
} .padding(.init(top: 12, leading: 12, bottom: 12, trailing: 30))
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
好吧,请看截图以便更好地理解,Text("Haibo: asdasd")
黄色区域居中。怎么可能让它一直领先对齐?