当前位置: 首页 > 知识库问答 >
问题:

SwiftUI将堆栈元素置于前台

扈昀
2023-03-14

我想在我的应用程序中使用一个拖放功能,但是仍然有一个问题,那就是我不知道如何将第一个VStack元素带到前台。感谢每一个帮助。

import SwiftUI

struct GameView: View {
@State private var text = "Element to be in foreground"
@State private var offset = CGSize.zero

var body: some View {
    HStack(){
        VStack(){
            Text(text)
        }
        .frame(maxWidth: 100)
        .frame(height: 100)
        .background(LinearGradient(gradient: Gradient(colors: [Color(#colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)), Color(#colorLiteral(red: 0.2392156869, green: 0.6745098233, blue: 0.9686274529, alpha: 1))]), startPoint: .top, endPoint: .bottom))
        .clipShape(RoundedRectangle(cornerRadius: 30, style: .continuous))
        .shadow(color: Color.black.opacity(0.2), radius: 20, x: 0, y: 20)
        .contentShape(Rectangle())
        .offset(y: offset.height)
        .offset(x: offset.width)
        .gesture(DragGesture()
                .onChanged { val in
                    self.offset = val.translation
                }
                .onEnded { val in
                    self.offset = .zero
                }
        )
        VStack(){
            Text("Text which is currently in foreground")
        }
    }
}
}

struct GameView_Previews: PreviewProvider {
    static var previews: some View {
        GameView()
        }
 }

共有1个答案

姜增
2023-03-14

一个容器中视图的顺序可以通过 (默认情况下为零)来更改,如

var body: some View {
    HStack(){
        VStack(){
            Text(text)
        }
        .frame(maxWidth: 100)
        .frame(height: 100)
        .background(LinearGradient(gradient: Gradient(colors: [Color(#colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)), Color(#colorLiteral(red: 0.2392156869, green: 0.6745098233, blue: 0.9686274529, alpha: 1))]), startPoint: .top, endPoint: .bottom))
        .clipShape(RoundedRectangle(cornerRadius: 30, style: .continuous))
        .shadow(color: Color.black.opacity(0.2), radius: 20, x: 0, y: 20)
        .contentShape(Rectangle())
        .offset(y: offset.height)
        .offset(x: offset.width)
        .gesture(DragGesture()
                .onChanged { val in
                    self.offset = val.translation
                }
                .onEnded { val in
                    self.offset = .zero
                }
        )
        .zIndex(1)         // << here !!

        VStack(){
            Text("Text which is currently in foreground")
        }
    }
}
 类似资料:
  • 我试图删除堆栈中的特定元素,但遇到了一些问题。我的想法是将元素弹出到一个临时堆栈中,弹出我正在寻找的索引,然后将临时堆栈中的元素弹出到主堆栈中。我很难想象如何让临时堆栈回到顶部。任何帮助都将不胜感激。 想法?干杯!

  • 我已经有一个stack类在工作,但是现在我每次只能弹出一个元素,我希望能够同时弹出多个元素。无需多次使用推送和弹出。我试图创建两个函数来实现这一点。函数pushAll和popN。比如: 备注:输入参数all是一个数组,包含所有必须输入的元素。向量的最后一个元素必须在叠加后位于顶部。如果没有空间插入所有元素,则必须不插入任何元素,并且必须引发StackFullException异常。popN方法弹出

  • 我对麋鹿栈没有太多的经验,我基本上只知道基础。 某些东西,即filebeat获取数据并将其发送到logstash Logstash 处理它并发送它 弹性搜索 Kibana 使用弹性搜索来可视化数据 (我希望这是正确的) 我需要创建一个elk系统,其中来自三个不同项目的数据被传递、存储和可视化。 项目号1。使用MongoDB,我需要将1个表中的所有信息放入kibana 项目2.也使用MongoDB,

  • 我试图理解使用中给出的递归对堆栈元素进行排序http://www.geeksforgeeks.org/sort-a-stack-using-recursion/不允许使用while、for…等任何循环结构。我们只能在堆栈S上使用以下ADT函数: is_empty(S):测试堆栈是否为空。 push(S) :向堆栈添加新元素。 Pop(S):从堆栈中删除顶部元素。 top(S) :返回 top 元素

  • 本摘录自《破解编码访谈》第5版 数字随机生成并存储在一个(扩展的)数组中。你如何跟踪中位数 作者向我们介绍了一个基于堆的解决方案: 堆非常擅长基本排序和跟踪max和mins。这实际上很有趣——如果你能跟踪元素的大一半和小一半。大一半保存在最小堆中,这样大一半中的最小元素在根。小一半保存在最大堆中,这样最小一半中的最大元素在根。现在有了这些数据结构,你就有了潜在的中值元素在根。”如果堆不再相同大小,

  • 我使用的是Java,我有一个节点列表,我需要在堆栈上按照从最后一个到第一个的顺序使用List。 例: 我的列表是{node1, node2, node3} 我的堆栈应该是 { 节点1, 节点2, 节点 3 } 我如何轻松解决这个问题? 这行得通吗?

  • 我试图找到最小元素并删除它,但不幸的是我不能。我想得到一些帮助,这是我的代码。 我在Class Stack中只有这些方法:equals,is空,pop,推送,top,toString(主要方法)。 提前感谢。

  • 通常我们可能会认为 HTML 网页是个二维的平面,因为页面中的文本、图像或者其它元素都是按照一定顺序排列在页面上的,每个元素之间都有一定的间隙,不会重叠。然而,实际的网页其实是三维的,元素之间可能会发生堆叠(重叠),您可以通过 CSS 中的 z-index 属性来设置元素的堆叠顺序,如下图所示: 图:元素堆叠演示 每个元素都有一个默认的 z-index 属性,将 z-index 属性与 posit