SwiftUI负填充Z顺序

SwiftUI负填充Z顺序,swiftui,padding,Swiftui,Padding,因此,在swiftUI中,可以使用负填充或负间距将VStack的两个元素放置在彼此的顶部 但是,您如何准确地选择哪个项目位于顶部呢?负填充确保存在重叠,但不指定哪个视图将位于重叠的顶部。那么,我如何控制哪个视图将位于顶部呢?这是一个多么有趣的问题 从一个小实验来看,最后添加的视图似乎更靠近前面 此排列显示一半屏幕为绿色,一半屏幕为红色: VStack(间距:0){ 垫片() 颜色。绿色。填充(-20) 颜色。红色。填充(0) 垫片() } 但是,在此视图中,红色视图与绿色视图重叠: VStac

因此,在swiftUI中,可以使用负填充或负间距将VStack的两个元素放置在彼此的顶部


但是,您如何准确地选择哪个项目位于顶部呢?负填充确保存在重叠,但不指定哪个视图将位于重叠的顶部。那么,我如何控制哪个视图将位于顶部呢?

这是一个多么有趣的问题

从一个小实验来看,最后添加的视图似乎更靠近前面

此排列显示一半屏幕为绿色,一半屏幕为红色:

VStack(间距:0){
垫片()
颜色。绿色。填充(-20)
颜色。红色。填充(0)
垫片()
}
但是,在此视图中,红色视图与绿色视图重叠:

VStack(间距:0){
垫片()
颜色。绿色。填充(0)
颜色。红色。填充(-20)
垫片()
}

这是一个多么有趣的问题

从一个小实验来看,最后添加的视图似乎更靠近前面

此排列显示一半屏幕为绿色,一半屏幕为红色:

VStack(间距:0){
垫片()
颜色。绿色。填充(-20)
颜色。红色。填充(0)
垫片()
}
但是,在此视图中,红色视图与绿色视图重叠:

VStack(间距:0){
垫片()
颜色。绿色。填充(0)
颜色。红色。填充(-20)
垫片()
}

您可以通过
.zIndex
修改器更改z顺序。默认情况下,所有视图的值都为0(零),因此,如果给定任何正值,则会将修改后的视图推到最顶部,而任何负值都会将视图推到底部

VStack(spacing: 0) {
    Spacer()
    Color.green.padding(0).zIndex(1)           // << here !!
    Color.red.padding(-20)
    Spacer()
}
VStack(间距:0){
垫片()

Color.green.padding(0).zIndex(1)/希望有一个容器,您可以通过
.zIndex
修改器更改z顺序。默认情况下,所有视图的z顺序都为0(零),因此给出任何正值都会将修改后的视图推到顶部,而任何负值都会将视图推到底部

VStack(spacing: 0) {
    Spacer()
    Color.green.padding(0).zIndex(1)           // << here !!
    Color.red.padding(-20)
    Spacer()
}
VStack(间距:0){
垫片()

Color.green.padding(0.zIndex(1)//首先感谢您回答John。是的,我发现同样的事情是正确的。问题是,我需要首先出现的视图垂直位于顶部(它是标题)。你知道我将如何切换我声明视图的顺序,但保持相同的垂直顺序吗?首先感谢你回答John。是的,我发现同样的事情是正确的。问题是,我需要首先出现的视图垂直位于顶部(它是标题).你知道我将如何改变我声明视图的顺序,但保持相同的垂直顺序吗?