2012-05-18 2 views
3

Мое приложение поддерживает выход HDMI.Черные полосы с адаптером HDMI на iPad 2

Я спросил код для разрешения телевизора и получил 1920 х 1080 точек для

externalScreen.bounds 

ОК, все отлично. Я настройки мои взгляды и попробовал его на экране телевизора ...

НО: Были черные полосы на нижней/верхней/стороны экрана, хотя телевизор был правильно обнаружен в 1920 х 1080 и мой взгляд также настроен правильно?

Почему формат неправильный?

P.S. Когда я отражаю главный экран, он также показывает полосы, когда я смотрю видео с приложением Youtube, черные полосы исчезают?

Благодарим за помощь!

Update:

ОК, хотя я получил этот вывод в моей консоли:

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.