首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >控制zIndex的多个ZStack

控制zIndex的多个ZStack
EN

Stack Overflow用户
提问于 2020-05-07 16:34:43
回答 1查看 52关注 0票数 1

想象一个网格(n X n)个正方形。这些正方形是ZStacks。它包含一个优化块(在本例中是一个圆圈)。如果我将这个片段偏移到另一个ZStack上,它就会被另一个ZStack隐藏起来。

我想做的是一个国际象棋游戏。假设Circle()是一个片段。这是我最初的尝试:

代码语言:javascript
复制
struct ContentView: View {

    @State var circle1Offset: CGSize = .zero
    var body: some View {
        VStack {
            ZStack {
                Color.blue
                Circle().fill(Color.black)
                .frame(width: 50, height: 50)
                .offset(circle1Offset)
                .gesture(
                    DragGesture()
                        .onChanged { value in
                            self.circle1Offset = value.translation
                        }
                )
            }
            .frame(width: 150, height: 150)
            ZStack {
                Color.red
            }
            .frame(width: 150, height: 150)

        }
    }
}

此外,我还尝试添加overlay()而不是使用ZStack。不确定在这种情况下哪个更精确,但不幸的是,我不能像这样添加一个“可选的”覆盖:

代码语言:javascript
复制
struct ContentView: View {

    @State var circle1Offset: CGSize = .zero
    var body: some View {
        VStack {
            Color.blue
                .frame(width: 150, height: 150)
                .overlay(
                    Circle().fill(Color.black)
                        .frame(width: 50, height: 50)
                        .offset(circle1Offset)
                        .gesture(
                            DragGesture()
                                .onChanged { value in
                                    self.circle1Offset = value.translation
                            }
                    )
            )
            Color.red
                .frame(width: 150, height: 150)

        }
    }

    func tileHasPiece() -> Circle? {
        return Circle() // This would consult my model
    }
}

但正如我所说的,我不知道如何使用tileHasPiece()来添加依赖于此的覆盖图。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-07 18:29:45

只需将所有的板静态元素放在下面,所有的图活动元素放在上面,就像下面修改你的代码快照一样。在这种情况下,一切都将在一个坐标空间中。(当然,图形坐标的计算不在本主题的讨论范围内)...

代码语言:javascript
复制
struct FTContentView: View {

    @State var circle1Offset: CGSize = .zero
    var body: some View {
        ZStack {
            // put board below
            VStack {
                Color.blue
                    .frame(width: 150, height: 150)
                Color.red
                    .frame(width: 150, height: 150)
            }

            // put figure above
            Circle().fill(Color.black)
            .frame(width: 50, height: 50)
            .offset(circle1Offset)
            .gesture(
                DragGesture()
                    .onChanged { value in
                        self.circle1Offset = value.translation
                    }
                )
        } // board coordinate space
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61653323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档