SwiftUI|SwiftUI 实现丝滑拖拽效果GestureState DragGesture(教程含源码)
实战需求
SwiftUI 实现丝滑拖拽效果GestureState DragGesture
本文价值与收获
看完本文后,您将能够作出下面的界面
文章图片
截屏2020-11-22 下午7.05.58.png 看完本文您将掌握的技能
- getsture
- DragGesture
- @GestureState
- .onEnded
@propertyWrapper @frozen struct GestureState
总览
SwiftUI为我们提供了一个特定的属性包装器,用于跟踪手势状态,称为@GestureState。尽管您可以使用简单的@State属性包装器完成相同的操作,但@GestureState它具有附加功能,即在手势结束时,它会自动将属性设置回其初始值。
@GestureStateupdating(_:body:)@GestureState
【SwiftUI|SwiftUI 实现丝滑拖拽效果GestureState DragGesture(教程含源码)】向添加长按手势Circle,并在手势过程中通过将属性声明为来更新界面:@GestureState
struct SimpleLongPressGestureView: View {
@GestureState var isDetectingLongPress = falsevar longPress: some Gesture {
LongPressGesture(minimumDuration: 3)
.updating($isDetectingLongPress) { currentstate, gestureState, transaction in
gestureState = currentstate
}
}var body: some View {
Circle()
.fill(self.isDetectingLongPress ? Color.red : Color.green)
.frame(width: 100, height: 100, alignment: .center)
.gesture(longPress)
}
}
实战代码
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现
- Node.js中readline模块实现终端输入
- java中如何实现重建二叉树
- 人脸识别|【人脸识别系列】| 实现自动化妆
- paddle|动手从头实现LSTM
- pytorch|使用pytorch从头实现多层LSTM