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