2

ユーザーが写真を撮ったりビデオを録画したりできるカメラアプリがあります。iPhone はアダプタを使用して医療用耳鏡に取り付けられているため、キャプチャされるビデオは非常に小さくなります (10 セント硬貨のサイズ程度)。ビデオをズームして画面全体に表示できるようにする必要がありますが、その方法がわかりません。

ObjC を使用する SO でこの回答を見つけましたが、Swift への変換に成功していません。私は非常に近いですが、立ち往生しています。UIPinchGestureRecgoznier を処理するためのコードは次のとおりです。

    @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)

... '型'CGAffineTransform' の値を型'CGTransform3D' に代入できません' というエラーが表示されます。私はこれを理解しようとしていますが、これを修正しようとする私の試みは実りがありませんでした.

4

1 に答える 1

2

問題のある行を次のように変更しました。

previewLayer?.setAffineTransform(CGAffineTransform(scaleX: scale, y: scale))
于 2016-11-16T22:00:02.637 に答える