使用下面的代码:
struct ContentView: View {
var body: some View {
ScrollView(.vertical) { Color.red }
}
}
Color只有10个点的高度,但是使用下面的代码:
struct ContentView: View {
var body: some View {
VStack { Color.red }
}
}
颜色填充了所有可用的空间(本例使用了VStack,但我可以使用一个GeometryReader或只是颜色本身)。
我希望颜色填充整个屏幕在这两个例子中,我不知道发生了什么当我使用ScrollView,如果我使用这样的边界修改器:
struct ContentView: View {
var body: some View {
ScrollView(.vertical) { Color.red }
.border(.yellow)
}
}
它在整个安全区域周围画了一个边界,这意味着ScrollView的大小,为什么颜色不也变成那样的大小呢?
只是为了澄清我不是试图应用背景到ScrollView,我显然可以提供一个框架Color填充一个特定的大小,我只是好奇,因为ScrollView打破了我对SwiftUI的理解,有时它的行为不像我期望的,这是一个例子。
-
一些视图扩展以匹配它们的父视图(如几何阅读器)
-
一些视图扩展以匹配其内容(如文本和颜色)
-
一些视图会缩小以适应它们的子视图(比如堆栈)
根据这些的组合,您将得到不同的行为,
因此,当您将Color
放入无限父级(如scrollView
)时,它无法检测大小并按您的预期增长,您应该使用scrollViewBackground
修饰符。
但是当你在堆栈中使用Color时,所有的大小都是预先定义的。