最新の SDK を使用して iOS アプリを開発しています。
LandscapeRight 方向のみをサポートするカメラ アプリを開発しています。
MainにforViewController
を追加しました。つまり、 mainにはメイン ビューと、 forと呼ばれる別のビューがあります。UIView
AVCaptureVideoPreviewLayer
ViewController
videoPreviewView
AVCaptureVideoPreviewLayer
メソッドで設定しAVCaptureVideoPreviewLayer
ましたviewWillAppear:
:
- (void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self setUpVideo];
}
- (void)setUpVideo
{
NSLog(@"Set up video");
if (DataExchanger.cameraManager != nil)
{
UIView *view = [self videoPreviewView];
CALayer *viewLayer = [view layer];
[viewLayer setMasksToBounds:YES];
AVCaptureVideoPreviewLayer *newCaptureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:DataExchanger.cameraManager.captureSession];
CGRect bounds = [view bounds];
NSLog(@"BOUNDS: %@", NSStringFromCGRect(bounds));
[newCaptureVideoPreviewLayer setFrame:bounds];
[newCaptureVideoPreviewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
[viewLayer insertSublayer:newCaptureVideoPreviewLayer below:[[viewLayer sublayers] objectAtIndex:0]];
}
}
私はこのログを取得します:
BOUNDS: {{0, 0}, {320, 480}}
しかし、その方向性でUIInterfaceOrientation
はUIInterfaceOrientationLandscapeRight
、これらの値が得られます。
BOUNDS: {{0, 0}, {480, 320}}
もう 1 つの問題は、ビデオが -90 度回転していることです。
このスタックオーバーフローの質問を見つけましたが、- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
メソッドがトリガーされることはありません。
何が起こっていますか?どうすればこの問題を解決できますか?