0

Objective-C では、これを行うことができます。

if ( UIDeviceOrientationIsPortrait( deviceOrientation ) || UIDeviceOrientationIsLandscape( deviceOrientation ) ) {
    AVCaptureVideoPreviewLayer *previewLayer = (AVCaptureVideoPreviewLayer *)self.previewView.layer;
    previewLayer.connection.videoOrientation = (AVCaptureVideoOrientation)deviceOrientation;
}

しかし、Swift では、この最後の行を翻訳する最良の方法は何ですか? 「deviceOrientation as AVCaptureVideoOrientation」はできません。

これまでに思いついたのは次のとおりです。

    if(UIDeviceOrientationIsPortrait(deviceOrientation) || UIDeviceOrientationIsLandscape(deviceOrientation)) {
        let myPreviewLayer: AVCaptureVideoPreviewLayer = self.previewLayer
        myPreviewLayer.connection.videoOrientation = AVCaptureVideoOrientation.init(rawValue: deviceOrientation.rawValue-1)!
    }

しかし、これはエレガントではないようです。-1 は 1 日の終わりの単なる列挙型であり、UIDeviceOrientation 列挙型の位置 0 には AVCaptureVideoOrientation にはない「不明な」ものがあるため、そこにあります...

4

4 に答える 4

0

これは私が得た変換です:

if UIDeviceOrientationIsPortrait(deviceOrientation) || UIDeviceOrientationIsLandscape(deviceOrientation) {
    var previewLayer: AVCaptureVideoPreviewLayer = previewView.layer
    previewLayer.connection.videoOrientation = deviceOrientation
}

私が使用したコンバーターは、コードがどのように見えるかを知らない傾向があるため ( Intvs. CGFloat)、デバッグなしでは機能しない可能性があります。たとえば、変数はおそらく定数に変更される可能性があります。

于 2015-11-18T14:43:56.163 に答える
0
connection.videoOrientation = AVCaptureVideoOrientation.Portrait

定数 AVCaptureVideoOrientation 値は、swift ヘッダー ファイルにあります。(スイフト2)

于 2016-10-28T20:56:14.753 に答える