Вопрос по ios, iphone, ipad, xcode – Черные полосы с адаптером HDMI на iPad 2

3

Мое приложение поддерживает вывод HDMI.

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

externalScreen.bounds

Ладно, все хорошо. Я настроил свои взгляды и попробовал это на телевизоре ...

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

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

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

Спасибо за помощь

Обновить

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

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) для тестовых целей.

Это вид, который я вижу на своем экране (обратите внимание на черные полосы):

Ваш Ответ

3   ответа
1
externalScreen.overscanCompensation = UIScreenOverscanCompensationInsetApplicationFrame;
1

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

Просто установите его в UIScreenOverscanCompensationInsetApplicationFrame, что может вызвать смещение содержимого UIWindow.

4

потому что соотношение сторон не соответствует 16: 9 (думаю, это 4: 3). Что касается внешнего дисплея, проверьте рамку вашего основного вида (вид, который должен охватывать весь экран). Вероятно, он не установлен в 1920 x 108

edit: я использовал этот код для проекта, где мне приходилось выводить данные с iPad на дисплей 1920 x 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];

    }
}
Спасибо тебе пока. Пожалуйста, посмотрите мои изменения. DAS
Это заставляет это работать:externalScreen.overscanCompensation = UIScreenOverscanCompensationInsetApplicationFrame; DAS
см. мои изменения. Я добавил функцию screenDidConnect, которую успешно использовал в прошлом. Dima
try setting externalScreen.overscanCompensation = 3 Dima
Я сделал:mainView.frame = externalScreen.bounds Симулятор делает это правильно. DAS

Похожие вопросы