269c52f158f20c7b4246b0f38bdc71e7
SwiftUI手势之控制视图旋转 获取实时度数 实现360度旋转效果 (教程含源码)

实战需求

SwiftUI手势之控制照片旋转 实现360度旋转效果

本文价值与收获

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

截屏2020-10-27 下午9.09.33.png

截屏2020-10-27 下午9.09.33.png

Jietu20201027-211026.gif

Jietu20201027-211026.gif

看完本文您将掌握的技能

  • RotationGesture
  • GestureState

基础知识

RotationGesture 旋转手势

识别旋转运动并跟踪旋转角度的手势。

struct RotationGesture

@GestureState

属性包装程序类型,当用户执行手势时更新属性,并在手势结束时将属性重置回其初始状态。

@propertyWrapper @frozen struct GestureState<Value>

总览
将属性声明为,作为绑定传递给它,作为手势回调的参数,并接收对其的更新。当手势变为非活动状态时,声明为隐式重置的属性使其适合于跟踪瞬态。@GestureStateupdating(_:body:)@GestureState

向添加长按手势Circle,并在手势过程中通过将属性声明为来更新界面:@GestureState

struct SimpleLongPressGestureView: View {
    @GestureState var isDetectingLongPress = false

    var 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)
    }
}

实战代码

```
import SwiftUI

struct ContentView: View {
@State private var angle: Angle = .degrees(.zero)

top Created with Sketch.