2012-05-18 56 views
3

我的應用程序支持HDMI輸出。帶有iPad 2上的HDMI適配器的黑條

我問了代號爲電視的分辨率,並得到1920×1080像素的

externalScreen.bounds 

OK,一切正常。我設置我的意見,並嘗試了在電視上...

但是:黑條底部/頂/雖然正確檢測到電視屏幕的兩側爲1920×1080,並我的看法也設置正確?

爲什麼格式錯了?

P.S.當我鏡像主屏​​幕時,它還會顯示酒吧,當我用Youtube應用程序觀看視頻時,黑條消失了嗎?

謝謝你的幫助!

更新:

OK,但我得到這個輸出在我的控制檯:

A new screen got connected: <UIScreen: 0x3439a0; bounds = {{0, 0}, {1920, 1080}}; mode = <UIScreenMode: 0x345240; size = 1920.000000 x 1080.000000>> 

...我仍然得到了黑框。出於測試目的,我使用CGRectMake(0.0f,0.0f,1920.0f,1080.0f)來啓動我的觀點。

這是我可以在我的屏幕上看到的(注意,黑條)的觀點:

enter image description here

回答

1
externalScreen.overscanCompensation = UIScreenOverscanCompensationInsetApplicationFrame; 
4

主屏幕將有黑邊,因爲長寬比不匹配16:9(這是4:3我認爲)。就外部顯示器而言,檢查主視圖的框架(應該跨越屏幕的視圖)。這可能是未設置爲1920×1080

編輯:我用這個代碼的一個項目,我必須輸出從iPad的1920×1080顯示屏,它的工作

- (void) screenDidConnect:(NSNotification *)aNotification 
{ 
    NSLog(@"A new screen got connected: %@", [aNotification object]); 
    //[self printScreenInfo]; 

    UIScreen* newScreen = [aNotification object]; 

    CGRect screenBounds = newScreen.bounds; 

    if (!self.externalWindow) 
    { 
     self.externalWindow = [[UIWindow alloc] initWithFrame:screenBounds]; 

     self.externalWindow.screen = newScreen; 
     self.externalViewController.view.frame = externalWindow.frame; 

     [self.externalWindow addSubview:externalViewController.view]; 

     self.externalWindow.hidden = NO; 
     // Set the initial UI for the window. 
     // [externalViewController displaySelectionInSecondaryWindow:externalWindow]; 

    } 
} 
+0

我做了:'mainView.frame = externalScreen.bounds'模擬器正確地完成了它。 – DAS

+0

看到我的編輯。我添加了過去成功使用的screenDidConnect函數。 – Dima

+0

到目前爲止,謝謝你。請看看我的編輯。 – DAS

1

的最適合大多數電視設置爲:

externalScreen.overscanCompensation = UIScreenOverscanCompensationInsetBounds | UIScreenOverscanCompensationInsetApplicationFrame; // this is the same as setting it to 3 

只要將它設置爲UIScreenOverscanCompensationInsetApplicationFrame可能導致的一個UIWindow內容錯位。

相關問題