ZStack 或使用 .overlay() 之间的区别
Difference between a ZStack or using .overlay()
使用 ZStack
与使用 .overlay()
修饰符有什么区别。
苹果说:
ZStack
= "覆盖其子项的视图,使它们在两个轴上对齐。"
.overlay
= "在该视图前面叠加一个辅助视图。"
一些例子:
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
中,视图相互独立并且堆栈适合(如果没有自己的框架)最大视图。也可以使用 .zIndex
修饰符修改 ZStack 中的顺序。所有视图都在 ZStack 坐标 space.
在 .overlay
情况下,overlay 中的视图始终绑定到父视图,并且始终 在 父视图之上(即 zIndex 不发挥任何作用)。叠加视图也在父视图坐标 space.
中
最明显的区别是是否使视图大小不同并应用裁剪,即
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()
}
}
给予
使用 ZStack
与使用 .overlay()
修饰符有什么区别。
苹果说:
ZStack
= "覆盖其子项的视图,使它们在两个轴上对齐。"
.overlay
= "在该视图前面叠加一个辅助视图。"
一些例子:
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
中,视图相互独立并且堆栈适合(如果没有自己的框架)最大视图。也可以使用 .zIndex
修饰符修改 ZStack 中的顺序。所有视图都在 ZStack 坐标 space.
在 .overlay
情况下,overlay 中的视图始终绑定到父视图,并且始终 在 父视图之上(即 zIndex 不发挥任何作用)。叠加视图也在父视图坐标 space.
最明显的区别是是否使视图大小不同并应用裁剪,即
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()
}
}
给予