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