SwiftUI 如何制作固定尺寸的 Spacer?

SwiftUISpacer 视图会自动填充其扩展轴上的所有可用空间,这是一种奇特的说法,即根据您放置的内容,它们在水平或垂直方向上会占用尽可能多的空间。

如果要制作一个精确大小的间隔物,只需执行与其他视图相同的操作即可:使用具有您想要的精确大小的 frame() 修饰符。

例如,这显示了两个文本视图,它们之间有一个 50 点的空格:

VStack {
    Text("First Label")
    Spacer()
        .frame(height: 50)
    Text("Second Label")
}

如果给定间隔符一个值的范围,例如使用 .frame(minHeight:50,maxHeight:500),则它将自动占用尽可能多的空间,直到您设置的最大值。 通常,以这种方式添加一些灵活性是一个好主意,这样您的用户界面就可以更轻松地跨设备扩展。

在某些情况下,您需要指定与布局方向无关的间隔符大小,例如,如果您的视图有时可能位于 HStackVStack 中,并且您希望间隔符添加 50 个点而不管其方向如何。

在这种情况下,应使用 minLength 初始化程序,如下所示:

VStack {
    Text("First Label")
    Spacer(minLength: 50)
    Text("Second Label")
}

注意:这是最小长度,因此如果有可用空间,则间隔物仍会变大。