SwiftUI中元素之间的间距?

5
我想知道为什么在SwiftUI中的两个元素之间会出现这种间距?如何控制/修改它? 我尝试给ExtractedView添加一些padding,但是没有改变任何东西。似乎这是由.frame(height: 56)引起的,但这恰好是按钮的高度,所以不应该导致任何间距。 代码:
import SwiftUI

struct FirstLaunchView: View {
    var body: some View {
        VStack {
            ZStack {
                Image("first-launch")
                    .resizable()
                    .scaledToFill()
                    .frame(height: 483)
                Text("AppName")
                    .font(.custom("Lobster", size: 24))
                    .fontWeight(.bold)
                    .foregroundColor(.white)
                    .frame(height: 483, alignment: .top)
                    .offset(x: 0, y: 61)
            }

            ZStack {
                VStack {
                    ExtractedView(title: "Start", textColor: Color.secondaryColor, bgColor: Color.primaryColor)
                    ExtractedView(title: "Log in", textColor: Color.primaryColor, bgColor: Color.secondaryColor)
                }
            }
            
            Spacer()
            
        }
        .ignoresSafeArea()
        
    }
}

struct ExtractedView: View {
    var title: String
    var textColor: Color
    var bgColor: Color
    
    var body: some View {
        ZStack {
            RoundedRectangle(cornerRadius: 27.5)
                .fill(bgColor)
                .frame(width: 279, height: 56)
            RoundedRectangle(cornerRadius: 27.5)
                .strokeBorder(Color.primaryColor, lineWidth: 2)
                .frame(width: 279, height: 56)
            Text(title)
                .font(.custom("NotoSans-Regular", size: 18))
                .fontWeight(.bold)
                .foregroundColor(textColor)
        }
        .frame(height: 56)
    }
}
2个回答

7

VStack有默认的间距,因此在

VStack {
    ExtractedView(title: "Start", textColor: Color.secondaryColor, bgColor: Color.primaryColor)
    ExtractedView(title: "Log in", textColor: Color.primaryColor, bgColor: Color.secondaryColor)
}

你可以让SwiftUI决定内部视图之间应该使用哪种默认间距。
如果你想要明确的间距,你可以像这样指定:
VStack(spacing: 25) {    // << here !!
  // ... views here
}

2

SwiftUI中的VStack默认有一个padding,如果不想要任何padding,则需要执行以下操作:

VStack(spacing: 0) {
    // your code goes here
}

这还可以让你拥有自己的间距,比如:
VStack(spacing: 40) { // 40 is the custom spacing
    // your code goes here
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接