| 
									
										
										
										
											2021-02-19 16:28:05 +01:00
										 |  |  | // | 
					
						
							|  |  |  | //  CameraView+Zoom.swift | 
					
						
							| 
									
										
										
										
											2021-06-21 22:42:46 +02:00
										 |  |  | //  mrousavy | 
					
						
							| 
									
										
										
										
											2021-02-19 16:28:05 +01:00
										 |  |  | // | 
					
						
							|  |  |  | //  Created by Marc Rousavy on 18.12.20. | 
					
						
							| 
									
										
										
										
											2021-06-01 13:07:57 +02:00
										 |  |  | //  Copyright © 2020 mrousavy. All rights reserved. | 
					
						
							| 
									
										
										
										
											2021-02-19 16:28:05 +01:00
										 |  |  | // | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import Foundation | 
					
						
							| 
									
										
										
										
											2023-10-13 18:33:20 +02:00
										 |  |  | import UIKit | 
					
						
							| 
									
										
										
										
											2021-02-19 16:28:05 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | extension CameraView { | 
					
						
							|  |  |  |   @objc | 
					
						
							|  |  |  |   final func onPinch(_ gesture: UIPinchGestureRecognizer) { | 
					
						
							| 
									
										
										
										
											2023-10-13 18:33:20 +02:00
										 |  |  |     let scale = max(min(gesture.scale * pinchScaleOffset, cameraSession.maxZoom), CGFloat(1.0)) | 
					
						
							| 
									
										
										
										
											2021-02-19 16:28:05 +01:00
										 |  |  |     if gesture.state == .ended { | 
					
						
							|  |  |  |       pinchScaleOffset = scale | 
					
						
							|  |  |  |       return | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-04 13:43:17 +03:00
										 |  |  |     // Update zoom React prop | 
					
						
							|  |  |  |     zoom = NSNumber(value: scale) | 
					
						
							| 
									
										
										
										
											2024-01-02 11:57:22 +01:00
										 |  |  |     didSetProps([]) | 
					
						
							| 
									
										
										
										
											2021-02-19 16:28:05 +01:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   func addPinchGestureRecognizer() { | 
					
						
							|  |  |  |     removePinchGestureRecognizer() | 
					
						
							|  |  |  |     pinchGestureRecognizer = UIPinchGestureRecognizer(target: self, action: #selector(onPinch(_:))) | 
					
						
							|  |  |  |     addGestureRecognizer(pinchGestureRecognizer!) | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   func removePinchGestureRecognizer() { | 
					
						
							| 
									
										
										
										
											2021-12-10 09:44:54 +01:00
										 |  |  |     if let pinchGestureRecognizer = pinchGestureRecognizer { | 
					
						
							| 
									
										
										
										
											2021-02-19 16:28:05 +01:00
										 |  |  |       removeGestureRecognizer(pinchGestureRecognizer) | 
					
						
							|  |  |  |       self.pinchGestureRecognizer = nil | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } |