Swiftui 引导对准

Swiftui 引导对准,swiftui,vstack,Swiftui,Vstack,我无法摆脱我的一个VSTACK中的“领先”填充物 我为其父VStack将“对齐”设置为“前导”,但它仍然在左侧显示一些间距(对于文本和红色圆角矩形)。它们应该放在屏幕截图上蓝色边缘的左边 你知道为什么会出现这种填充物吗 代码如下: import SwiftUI struct RegisterView: View { var body: some View { VStack(spacing: 0) { HStack(alignment: .top

我无法摆脱我的一个VSTACK中的“领先”填充物

我为其父VStack将“对齐”设置为“前导”,但它仍然在左侧显示一些间距(对于文本和红色圆角矩形)。它们应该放在屏幕截图上蓝色边缘的左边

你知道为什么会出现这种填充物吗

代码如下:

import SwiftUI

struct RegisterView: View {
    var body: some View {
        VStack(spacing: 0) {

            HStack(alignment: .top) {
                Text("Register")
                    .font(.custom("NotoSans-Regular", size: 24))
                    .fontWeight(.bold)
                    .foregroundColor(Color.tertiaryTitleColor)
            }
            .frame(width: 299, height: 39)
            .padding(.top, 78)
            
            HStack(spacing: 13) {
                BroviderButton(imageName: "googleLogo")
                BroviderButton(imageName: "facebookLogo")
            }
            .padding(.top, 47)

            VStack(alignment: .leading, spacing: 0) {

                Text("Register with E-mail")
                    .font(.custom("NotoSans-Regular", size: 16))
                RoundedRectangle(cornerRadius: 25)
                    .fill(Color.red)
                    .frame(width: 40, height: 20)
            }
            .frame(width: 279)
            .padding(.top, 61)

            Spacer()
        }
        .frame(maxHeight: /*@START_MENU_TOKEN@*/.infinity/*@END_MENU_TOKEN@*/)
        .frame(maxWidth: /*@START_MENU_TOKEN@*/.infinity/*@END_MENU_TOKEN@*/)
        .background(Color.loginBackgroundColor)
        .ignoresSafeArea()
    }
}

struct RegisterView_Previews: PreviewProvider {
    static var previews: some View {
        RegisterView()
    }
}


struct BroviderButton: View {
    var imageName: String
    var body: some View {
        ZStack {
            RoundedRectangle(cornerRadius: 27.5)
                .frame(width: 133, height: 56, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/)
                .shadow(color: Color.dropShadowColor, radius: 1, x: 10, y: 20)
                .offset(y: 15)
                .opacity(0.2)
                .blur(radius: 20)
                .opacity(0.2)
            VStack {
                VStack {
                    Image(imageName)
                        .resizable()
                        .scaledToFit()
                }
                .frame(height: 28, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/)
            }
            .frame(width: 133, height: 56, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/)
            .foregroundColor(/*@START_MENU_TOKEN@*/.blue/*@END_MENU_TOKEN@*/)
            .background(Color.loginBackgroundColor)
            .cornerRadius(27.5)
            .opacity(1)
                        
        }
    }
}

您还需要对容器的框架应用对齐,如

VStack(alignment: .leading, spacing: 0) {

    Text("Register with E-mail")
        .font(.custom("NotoSans-Regular", size: 16))
    RoundedRectangle(cornerRadius: 25)
        .fill(Color.red)
        .frame(width: 40, height: 20)
}
.frame(width: 279)      // << do you really need this? why?
.frame(maxWidth: .infinity, alignment: .leading)    // << here !!
.padding(.top, 61)
VStack(对齐:。前导,间距:0){
文本(“通过电子邮件注册”)
.font(.custom(“NOTSANS常规”,大小:16))
圆角转角(拐角半径:25)
.填充(颜色.红色)
.框架(宽度:40,高度:20)
}

.frame(宽度:279)/您还需要对容器的框架应用对齐,如

VStack(alignment: .leading, spacing: 0) {

    Text("Register with E-mail")
        .font(.custom("NotoSans-Regular", size: 16))
    RoundedRectangle(cornerRadius: 25)
        .fill(Color.red)
        .frame(width: 40, height: 20)
}
.frame(width: 279)      // << do you really need this? why?
.frame(maxWidth: .infinity, alignment: .leading)    // << here !!
.padding(.top, 61)
VStack(对齐:。前导,间距:0){
文本(“通过电子邮件注册”)
.font(.custom(“NOTSANS常规”,大小:16))
圆角转角(拐角半径:25)
.填充(颜色.红色)
.框架(宽度:40,高度:20)
}
.框架(宽度:279)//