美文网首页
SwiftUI—如何给视图添加拖动手势

SwiftUI—如何给视图添加拖动手势

作者: anny_4243 | 来源:发表于2020-07-15 14:25 被阅读0次

原文链接:https://github.com/fzhlee/SwiftUI-Guide#-%E7%AC%AC5%E8%8A%82draggesture-

本节课演示使用拖动手势实现拖放操作,拖放操作经常用于游戏类的应用。

示例代码:

struct ContentView : View {
    
    @State var offset: CGSize = .zero //表示视图被拖动的距离
    
    var body: some View {
        let dragGesture = DragGesture() //初始化一个拖动手势,该手势一旦识别到手指拖动的触摸事件,就会调用手势的状态变化事件
            .onChanged { (value) in
                print(value.startLocation, value.location, value.translation)
                self.offset = value.translation
            }
            .onEnded { (value) in
                if(abs(value.translation.width) >= 40 || abs(value.translation.height - (-260)) >= 40){ //如果被拖动的视图,距离目标视图的位置较远,则返回原来的位置
                    self.offset = .zero
                }
                else{ //如果被拖动的视图,距离目标视图的位置较近,则将被拖动的视图,放置在目标视图的位置
                    self.offset = CGSize(width: 0, height: -260)
                }
            }
        
        return VStack{
            Circle()
                .fill(Color.black)
                .opacity(0.1)
                .frame(width: 200, height: 200)
                .offset(CGSize(width: 0, height: -50))
            
            Circle()
                .fill(Color.orange)
                .frame(width: 200, height: 200)
                .offset(offset)
                .gesture(dragGesture)
                .animation(.spring())
        }
        
    }
}

相关文章

网友评论

      本文标题:SwiftUI—如何给视图添加拖动手势

      本文链接:https://www.haomeiwen.com/subject/zxvdhktx.html