【SwiftUI】手势(Gestures)的使用

作者 : 开心源码 本文共903个字,预计阅读时间需要3分钟 发布时间: 2022-05-13 共197人阅读

这篇文章主要理解在SwiftUI中如何使用手势,以及对@GestureState的学习,最后通过组合手势完成写一个拖拽卡片的小Demo。

Gesture modifier

SwiftUI提供了一系列的手势支持,比方 TapGesture, DragGesture, RotationGesture, MagnificationGesture, LongPressGesture等。我们可以通过对View增加modifier来添加手势支持,比方下面这块代码:

imageimage

示例中,我们公告一个@GestureState修饰的布尔变量,来存储当前的长按状态,当被按下的时候升级view的背景色及大小。通过对Gesture添加update调用来升级isLongPressed,进而升级对应的View。此外我们在升级isLongPressed的闭包中添加了对value的打印,每次按下的时候都会将isLongPressed升级为true,在手势结束的时候自动将绑定的属性恢复为初始值。我们可以看下update的方法公告:

image

DragGesture

在前一小结的基础上,我们将通过DragGesture来实现对色块的拖动,在拖动结束后,检查拖动后的位置,假如超出了屏幕范围,则恢复到初始位置,否则停留在拖动结束的位置。通过前一小结学习到,在手势结束时SwiftUI会自动将@GestureState修饰的属性值恢复为初始值,在这里为了避免拖动结束时自动恢复到初始位置,我们使用@State来修饰View的拖动位置属性。代码实现如下:

image

Composing gestures

SwiftUI提供了三种组合手势的方式来支持对View增加多个手势的场景。分别为Simultaneous、Sequenced、Exclusive;当使用Simultaneous时SwiftUI会同时执行所有的手势、当使用Sequenced时会按照顺序线性的执行、当使用Exclusive时就只会执行子手势。以下示例使用Simultaneous组合了LongPressGesture和DragGesture。

image


【关注微信公众号 发现更多精彩】

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 【SwiftUI】手势(Gestures)的使用

发表回复