2017-11-09 5 views
1

프로그래밍 방식으로 추가 된 카메라 미리보기 레이어에 핀치 확대/축소를 추가하려고합니다. 나는이 코드를 함수로 가지고있다. 그러나 그것은 내가 가지고있는 팁이다. 나는 그것에 관련된 다른 코드를 가지고 있지 않다. 나는 그 (것)들의 주위에 더군다나 정보를 전부 정지 심상에 집중하는 것처럼 보이는 찾아 낼 수 없다.카메라 미리보기 레이어, iOS, 스위프트에 제스처 핀치 줌 추가

override func viewDidLoad() { 
    super.viewDidLoad() 

    let pinchRecognizer = UIPinchGestureRecognizer(target: self, action:#selector(pinch(_:))) 

    pinchRecognizer.delegate = self 
    self.cameraPreviewlayer.addGestureRecognizer(pinchRecognizer) 

}

나는이 라인

self.cameraPreviewlayer.addGestureRecognizer (pinchRecognizer)

이 cameraPreviewLayer이 geture를 추가하지 않는다고 말했습니다에 오류가 발생합니다.

여기에 함수가 있습니다.

@objc func pinch(_ pinch: UIPinchGestureRecognizer) { 

    let device = videoDeviceInput.device 

    // Return zoom value between the minimum and maximum zoom values 
    func minMaxZoom(_ factor: CGFloat) -> CGFloat { 
     return min(min(max(factor, minimumZoom), maximumZoom), device.activeFormat.videoMaxZoomFactor) 
    } 

    func update(scale factor: CGFloat) { 
     do { 
      try device.lockForConfiguration() 
      defer { device.unlockForConfiguration() } 
      device.videoZoomFactor = factor 
     } catch { 
      print("\(error.localizedDescription)") 
     } 
    } 

    let newScaleFactor = minMaxZoom(pinch.scale * lastZoomFactor) 

    switch pinch.state { 
    case .began: fallthrough 
    case .changed: update(scale: newScaleFactor) 
    case .ended: 
     lastZoomFactor = minMaxZoom(newScaleFactor) 
     update(scale: lastZoomFactor) 
    default: break 
    } 
} 

답변

1

이 문제를 해결할 수있었습니다.

내가해야 할 일을했을 모든

는보기에서

let pinchRecognizer = UIPinchGestureRecognizer(target: self, action:#selector(pinch(_:))) 

pinchRecognizer.delegate = self 
self.cameraPreviewlayer.addGestureRecognizer(pinchRecognizer) 

를 이동했다 나는 카메라 미리보기 층을 설정하는 곳으로 부하를했다.

cameraPreviewlayer = AVCaptureVideoPreviewLayer(session: captureSession) 
    cameraPreviewlayer?.videoGravity = AVLayerVideoGravity.resizeAspectFill 
    cameraPreviewlayer?.connection?.videoOrientation = AVCaptureVideoOrientation.portrait 
    cameraPreviewlayer?.frame = self.view.frame 
    //  scanArea.setRegionOfInterestWithProposedRegionOfInterest(regionOfInterest) 
    self.view.layer.insertSublayer(cameraPreviewlayer!, at: 0) 
    let pinchRecognizer = UIPinchGestureRecognizer(target: self, action:#selector(pinch(_:))) 

    pinchRecognizer.delegate = self 
    self.view.addGestureRecognizer(pinchRecognizer)