swiftui - ZStack 或使用 .overlay() 之间的区别

标签 swiftui overlay zstack

使用 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()
    }
}

demo 1
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()
    }
}

demo2
backup

关于swiftui - ZStack 或使用 .overlay() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63446213/

相关文章:

用空格覆盖其他人的 div 边框的 CSS 技巧?

html - 使用 CSS 将文本覆盖在图像之上

google-chrome-extension - 浏览器插件/扩展/插件一次查看所有元素的 id

macros - 如何在 ImageJ 中裁剪堆栈而不先复制

带有 .fill ContentMode 的 SwiftUI AsyncImage 覆盖 ZStack iOS-17 中的按钮

swift - 具有环绕和动态高度的SwiftUI HStack

SwiftUI 工作表在第一次呈现时被关闭

ios - SwiftUI 从页面向 PageViewController 发送 Action

ios - 如何解决 SwiftUI Tap 冲突?

ios - Transition 不适用于嵌套在 List 中的 ForEach 以及来自 Core Data 的数据