我的设计看起来像这样:
当我将其包装在Button中时,“图像”和“ HOME”文本将向中心移动:
我正在尝试使内容向左对齐,但是遇到了麻烦。这是组成此组件的代码。
struct HomeSection: View {
var body: some View {
Button(action: {
}) {
Group {
Spacer().frame(width: 0, height: 36.0, alignment: .topLeading)
HStack {
Image("home")
.resizable()
.frame(width: 24, height: 24)
.foregroundColor(.navigationTextGrey)
Text("HOME")
.bold()
.font(.system(size: 17.0))
.foregroundColor(Color.navigationTextGrey)
.padding(.leading, 4.0)
}
Rectangle()
.fill(Color.navigationTextGrey)
.frame(width: UIScreen.main.bounds.width - 60, height: 1)
.padding(.top, 6.0)
}
}
}
}
答案 0 :(得分:2)
您可以在HStack上添加垫片,并填充以使房屋图像与矩形对齐。
var body: some View {
Button(action: {
}) {
Group {
Spacer().frame(width: 0, height: 36.0, alignment: .topLeading)
HStack {
Image("home")
.resizable()
.frame(width: 24, height: 24)
.foregroundColor(.navigationTextGrey)
.padding(.leading, 30.0)
Text("HOME")
.bold()
.font(.system(size: 17.0))
.foregroundColor(Color.navigationTextGrey)
.padding(.leading, 4.0)
Spacer()
}
Rectangle()
.fill(Color.navigationTextGrey)
.frame(width: UIScreen.main.bounds.width - 60, height: 1)
.padding(.top, 6.0)
}
}
}
此外,如果您想稍微清理一下代码,则有一个divider view可以代替矩形,而代替矩形
Divider()
.padding([.leading, .trailing], 30)
答案 1 :(得分:2)
是的,可以清理很多。
var body: some View {
Button(action: {
}) {
VStack(spacing: 6) {
HStack(spacing: 4) {
Image("home")
.resizable()
.frame(width: 24, height: 24)
Text("HOME")
.bold()
.font(.system(size: 17.0))
Spacer()
}
Divider()
}
}
.foregroundColor(.navigationTextGrey)
.padding([.leading, .trailing], 30)
}
答案 2 :(得分:1)
您应该尝试为HStack添加一个垫片和对齐方式
HStack() {
Image("home")
.resizable()
.frame(width: 24, height: 24)
.foregroundColor(.navigationTextGrey)
Text("HOME")
.bold()
.font(.system(size: 17.0))
.foregroundColor(Color.navigationTextGrey)
.padding(.leading, 4.0)
Spacer()
}
答案 3 :(得分:1)
尝试使用 maxWidth = .infinity 的间隔
Spacer().frame(maxWidth:.infinity)