私はApple AVCamのコード例を扱っています。プレビューレイヤーをデバイスで回転させるために、次を実装しました。すべてが正常に機能していますが、インターフェイスの下部にツールバーがあるため、最初はプレビュー レイヤー ビューのサイズが設定されています。デバイスを回転させると、ビューがフルスクリーンになり、ツールバーが覆われます。
-(BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
return /*UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown |*/
UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;
}
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
switch (toInterfaceOrientation) {
/*case UIDeviceOrientationPortrait:
[videoPreviewView.layer setAffineTransform:CGAffineTransformMakeRotation(0)];
break;
case UIDeviceOrientationPortraitUpsideDown:
[videoPreviewView.layer setAffineTransform:CGAffineTransformMakeRotation(M_PI)];
break;*/
case UIDeviceOrientationLandscapeLeft:
[videoPreviewView.layer setAffineTransform:CGAffineTransformMakeRotation(/*-M_PI/2*/0)];
break;
case UIDeviceOrientationLandscapeRight:
[videoPreviewView.layer setAffineTransform:CGAffineTransformMakeRotation(/*M_PI/2*/M_PI)];
break;
default:
break;
}
videoPreviewView.layer.frame = self.view.bounds;
CGAffineTransform transform = [videoPreviewView.layer affineTransform];
NSLog(@"videoPreviewView:transform: [%f %f,%f,%f,%f,%f",transform.a, transform.b,
transform.c, transform.d, transform.tx, transform.ty);
NSLog(@"previewView.layer.frame width: %f height: %f",videoPreviewView.layer.frame.size.width,
videoPreviewView.layer.frame.size.height);
}
-(void) viewDidAppear:(BOOL)animated
{
[super viewDidAppear:YES];
//Get Preview Layer connection
AVCaptureConnection *previewLayerConnection=self.captureVideoPreviewLayer.connection;
if ([previewLayerConnection isVideoOrientationSupported]){
[previewLayerConnection setVideoOrientation:[[UIApplication sharedApplication] statusBarOrientation]];
self.captureVideoPreviewLayer.frame=self.view.bounds;
}
}
プレビュー レイヤー ビューを回転させてインターフェイスをインラインに保つにはどうすればよいですか?