SwiftUI Button监听点击和释放消息 实现照片切换 (教程含源码 技术大全)

实战需求

SwiftUI Button监听点击和释放消息 实现照片切换

本文价值与收获

看完本文后,您将能够作出下面的界面

SwiftUI Button监听点击和释放消息 实现照片切换 (教程含源码 技术大全)_第1张图片
截屏2020-11-08 上午10.12.44.png
Jietu20201108-101403.gif

看完本文您将掌握的技能

  • simultaneousGesture
  • ViewModifier
  • @escaping
  • DragGesture
  • overlay
  • GeometryReader
  • contentShape(Rectangle())

基础知识

simultaneousGesture 同时手势

一个包含两个手势的手势,两个手势可以同时发生,而两个手势都不在另一个手势之前。

@frozen struct SimultaneousGesture where First : Gesture, Second : Gesture

总览

同时手势是容器事件处理程序,可同时评估其两个子手势。它的值是具有两个可选值的结构,每个值代表两个手势之一的阶段。

参考代码

struct PressActions: ViewModifier {
    var onPress: () -> Void
    var onRelease: () -> Void
    
    func body(content: Content) -> some View {
        content
            .simultaneousGesture(
                DragGesture(minimumDistance: 0)
                    .onChanged({ _ in
                        onPress()
                    })
                    .onEnded({ _ in
                        onRelease()
                    })
            )
    }
}

@escaping

出于性能方面的考虑,Swift假定所有闭包都是不存储数据的,这意味着它们将在函数内部立即使用而不被存储,这反过来意味着Swift不会触及引用计数。如果您需要存储闭包,那么Swift要求您将闭包标注为@escapeing,以便必须更改引用计数。


实战代码

你可能感兴趣的:(SwiftUI Button监听点击和释放消息 实现照片切换 (教程含源码 技术大全))