From f76d234da71a5c2c8d23ed6a6516b809337f5bfb Mon Sep 17 00:00:00 2001 From: leoz Date: Wed, 21 Feb 2024 11:57:12 -0500 Subject: Add rotation gesture --- Sources/SwiftyCrop/Models/CropViewModel.swift | 2 ++ Sources/SwiftyCrop/View/CropView.swift | 11 +++++++++++ 2 files changed, 13 insertions(+) (limited to 'Sources') diff --git a/Sources/SwiftyCrop/Models/CropViewModel.swift b/Sources/SwiftyCrop/Models/CropViewModel.swift index f597fd4..a9557ac 100644 --- a/Sources/SwiftyCrop/Models/CropViewModel.swift +++ b/Sources/SwiftyCrop/Models/CropViewModel.swift @@ -10,6 +10,8 @@ class CropViewModel: ObservableObject { @Published var lastScale: CGFloat = 1.0 @Published var offset: CGSize = .zero @Published var lastOffset: CGSize = .zero + @Published var angle: Angle = Angle(degrees: 0) + @Published var lastAngle: Angle = Angle(degrees: 0) init( maskRadius: CGFloat, diff --git a/Sources/SwiftyCrop/View/CropView.swift b/Sources/SwiftyCrop/View/CropView.swift index 03de910..c76f7f8 100644 --- a/Sources/SwiftyCrop/View/CropView.swift +++ b/Sources/SwiftyCrop/View/CropView.swift @@ -64,6 +64,14 @@ struct CropView: View { .onEnded { _ in viewModel.lastOffset = viewModel.offset } + + let rotationGesture = RotationGesture() + .onChanged { value in + viewModel.angle = value + } + .onEnded { _ in + viewModel.lastAngle = viewModel.angle + } VStack { Text("interaction_instructions", tableName: localizableTableName, bundle: .module) @@ -76,6 +84,7 @@ struct CropView: View { Image(uiImage: image) .resizable() .scaledToFit() + .rotationEffect(viewModel.angle) .scaleEffect(viewModel.scale) .offset(viewModel.offset) .opacity(0.5) @@ -91,6 +100,7 @@ struct CropView: View { Image(uiImage: image) .resizable() .scaledToFit() + .rotationEffect(viewModel.angle) .scaleEffect(viewModel.scale) .offset(viewModel.offset) .mask( @@ -101,6 +111,7 @@ struct CropView: View { .frame(maxWidth: .infinity, maxHeight: .infinity) .simultaneousGesture(magnificationGesture) .simultaneousGesture(dragGesture) + .simultaneousGesture(rotationGesture) HStack { Button { -- cgit v1.2.3