它不适用于您的示例的原因是您scaledToFill()
在图像上使用了修饰符,在这种特殊情况下它很重要。
首先,您声明ZStack
which is 本身不会忽略安全区域。在你放Image
and之后resizable
。可调整大小的作用是拉伸图像以适合其视图,在您的情况下是ZStack
.
让我们看看到目前为止我们有什么。我们有一个延伸到安全区域的图像。
ZStack {
Image("Breakfast").resizable()
}

所以从现在开始你穿上edgesIgnoringSafeArea
,Image
让图像覆盖所有区域(忽略安全区域)。现在你有Zstack
哪些尊重安全区域,Image
哪些忽略安全区域。这使您可以在其中放入VStack
和ZStack
添加人员。VStack
将填充其父视图,即ZStack
,因此它也将尊重安全区域(参见下面的代码和图像)。
ZStack {
Image("Breakfast").resizable().edgesIgnoringSafeArea(.all)
VStack {
Text("hello")
Spacer()
}
}

最后在这里添加.scaledToFill()
修饰符,它拉伸图像以包含所有区域,通过这样做,它使ZStack
视图成为孔区域,因为拟合视图(ZStack、HStack、VStack)根据其内容计算其大小。

有用的链接:
在 SwiftUI 中拟合和填充视图
如何调整 SwiftUI 图像的大小并保持其纵横比