2016-11-16 3 views
2

にpreviewLayerのズーミングは、私は両方のユーザーが写真や記録ビデオを取ることができるカメラアプリを持っています。 iPhoneは、アダプタを使用して医療用耳鏡に取り付けられているので、キャプチャされたビデオは、(ダイムのサイズについて)非常に小さいです。私は画面を満たすためにビデオをズームすることができる必要がありますが、そうする方法を見つけることができませんでした。AVCaptureとスウィフト

私はにObjCを使用していますが、スウィフトにそれを翻訳して成功を持っていなかったことthis answer here on SOを発見しました。私は非常に近いですが、立ち往生しています。

@IBAction func handlePinchGesture(sender: UIPinchGestureRecognizer) { 

    var initialVideoZoomFactor: CGFloat = 0.0 

    if (sender.state == UIGestureRecognizerState.began) { 
     initialVideoZoomFactor = (captureDevice?.videoZoomFactor)! 
    } else { 
     let scale: CGFloat = min(max(1, initialVideoZoomFactor * sender.scale), 4) 

     CATransaction.begin() 
     CATransaction.setAnimationDuration(0.01) 
     previewLayer?.transform = CGAffineTransform(scaleX: scale, y: scale) 
     CATransaction.commit() 

     if ((captureDevice?.lockForConfiguration()) != nil) { 
      captureDevice?.videoZoomFactor = scale 
      captureDevice?.unlockForConfiguration() 
     } 

    } 
} 

この行...

previewLayer?.transform = CGAffineTransform(scaleX: scale, y: scale) 

が...私にCGTransform3D 『『を入力するには』CGAffineTransform「タイプの値を割り当てることができません』というエラーを与える:ここでUIPinchGestureRecgoznierを処理するための私のコードです。私はこれを理解しようとしていますが、これを修正しようとする私の試みは未実績です。

答えて

2

はそれを考え出した:

previewLayer?.setAffineTransform(CGAffineTransform(scaleX: scale, y: scale)) 
:に問題のある行を変更
関連する問題