使用 ZStack
有什么区别?与使用 .overlay()
相比修饰符。
苹果 说:ZStack
= "覆盖其子项的 View ,使它们在两个轴上对齐。".overlay
= "在此 View 前分层一个辅助 View 。"
一些例子:
ZStack(alignment: .bottom) {
Image(systemName: "folder")
.font(.system(size: 55, weight: .thin))
Text("❤️")
}
Image(systemName: "folder")
.font(.system(size: 55, weight: .thin))
.overlay(Text("❤️"), alignment: .bottom)
不考虑代码大小,是否有一个必须使用另一个的明确目的?
最佳答案
在 ZStack
View 彼此独立,并且堆栈适合(如果没有自己的框架)到最大 View 。 ZStack 中的订单也可以使用 .zIndex
进行修改。修饰符。所有 View 都在 ZStack 坐标空间中。
在 .overlay
情况下,覆盖层内的 View 始终绑定(bind)到父 View 并始终位于父 View 之上(即 zIndex 不起任何作用)。叠加 View 也在父 View 坐标空间中。
最明显的区别是是否使 View 大小不同并应用剪辑,即
struct TestZStack: View {
var body: some View {
ZStack(alignment: .bottom) {
Image(systemName: "folder")
.font(.system(size: 55, weight: .thin))
Text("❤️").font(.system(size: 55, weight: .thin))
}
.clipped()
}
}
给struct TestOverlay: View {
var body: some View {
Image(systemName: "folder")
.font(.system(size: 55, weight: .thin))
.overlay(Text("❤️").font(.system(size: 55, weight: .thin)), alignment: .bottom)
.clipped()
}
}
给backup
关于swiftui - ZStack 或使用 .overlay() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63446213/