2013-03-15 60 views
2

我正在開發一個iOS應用程序與最新的SDK。UIInterfaceOrientation是風景但UIView仍然在肖像模式

我正在開發一款僅支持LandscapeRight方向的相機應用程序。

On Main ViewController我爲AVCaptureVideoPreviewLayer添加了UIView。換句話說,主要是ViewController我有主視圖,另一個視圖videoPreviewView,對於AVCaptureVideoPreviewLayer

我對viewWillAppear:方法建立AVCaptureVideoPreviewLayer

- (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}} 

UIInterfaceOrientationUIInterfaceOrientationLandscapeRight,並與方向,我會得到這些值:

BOUNDS: {{0, 0}, {480, 320}} 

另一個問題是我看到視頻旋轉-90度

我發現這個stackoverflow question,但從未觸發- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation方法。

發生了什麼事?我該如何解決這個問題?

回答

-1
  1. AVCaptureVideoPreviewLayer的默認對象方向爲橫向!
  2. AVCaptureVideoPreviewLayer的方向不隨設備的方向而改變。你必須手動改變它。
  3. 要手動更改它,你需要調用預覽層的連接,並將其旋轉:

iOS6的:

AVCaptureConnection *previewLayerConnection=self.newCaptureVideoPreviewLayer.connection; 
if ([previewLayerConnection isVideoOrientationSupported]) 
    [previewLayerConnection setVideoOrientation:AVCaptureVideoOrientationLandscapeRight]; 

< iOS6的:

if ([self.newCaptureVideoPreviewLayer isOrientationSupported]) 
[self.newCaptureVideoPreviewLayer setOrientation:AVCaptureVideoOrientationLandscapeRight]; 
+0

我的工作與最新的SDK,我支持iOS 5.0及以上。我必須使用哪個版本的答案?但我認爲你的回答並沒有解決我的問題,因爲現在我正在使用第二個選項,而且我遇到了這個問題。 – VansFannel 2013-03-18 07:36:35

+0

如果有人打算在發帖後的3個月隨機抽取3個我的答案;至少請發表評論和理由(如果有的話)。 – Spectravideo328 2014-05-20 11:24:31