Как сделать pdf 16:9 под размер экрана в vfr/Reader на втором экране 16:9 airplay с iPad 4:3

Я хотел бы отображать на экране AirPlay тот же контент, что и на главном экране, как это делается по умолчанию, когда вы подключаете свое устройство к AirPlay в приложении. Это нормально работает естественно.

Но мой второй экран 16:9, а мой iPad 4:3, и я использую vfr/Reader, и pdf, который я читаю, имеет формат 16:9. Я хочу добиться того же, что и в PowerPoint, когда вы запускаете .pptx в слайд-шоу режим. он показывает pptx только в формате 16:9 на втором экране.

Я пробовал следующее: https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/WindowAndScreenGuide/UsingExternalDisplay/UsingExternalDisplay.html#//apple_ref/doc/uid/TP40012555-CH3-SW1

Чего я могу добиться, так это увеличить ширину второго экрана на всю ширину с красным фоном:

   if (_secondWindow)
    {
        NSLog(@"INIT SECOND WINDOW");
        _secondWindow = [[UIWindow alloc] initWithFrame:screenBounds];
        _secondWindow.backgroundColor = [UIColor redColor];

        _secondWindow.screen = newScreen;
        _secondWindow.hidden = NO;

        //change size to 200 200 
        //_secondWindow.frame = CGRectMake(0, 0, 200,200);

        // Set the initial UI for the window.

    }

Что мне нужно, так это сказать что-то вроде: взять содержимое моей основной текущей вдовы и реплицировать его в _secondWindow с другим размером больше.

Когда я делаю это:

_secondWindow = [[[UIApplication sharedApplication] delegate] window];

У меня есть содержимое mainWindow на втором экране, но размер не меняется. Мне нужно только принудительно увеличить размер экрана зеркального отображения, масштабировать содержимое на экране зеркального отображения и синхронизировать его.

Есть ли способ добиться этого? В каком-то посте я вижу, что невозможно иметь один и тот же экземпляр для двух экранов, может быть, есть лучший способ, чем использование vfr/Reader, например, иметь ридер в двух webView или что-то еще? Или максимум, что можно сделать в этой ситуации, это только реплицировать текущий pdf как png (но сохранить высокое качество разрешения) на втором экране?

Но как это работает, когда в вашем приложении есть видео, вам нужно обрабатывать каждый случай?


person Aaleks    schedule 09.03.2016    source источник


Ответы (1)


Вам нужно создать совершенно новый дисплей, используя:

- (void)handleScreenDidDisconnectNotification:(NSNotification*)aNotification

а также

- (void)handleScreenDidConnectNotification:(NSNotification*)aNotification

Затем, когда у вас есть этот экран, вы можете использовать полное разрешение.

Чтобы использовать всю ширину и высоту второго экрана (без границ), вам необходимо:

secondScreen.overscanCompensation=UIScreenOverscanCompensationNone;

Где «второй экран» — это AirPlay: (UIScreen).

Обратите внимание, что UIScreenOverscanCompensationNone был введен в IOS 9, установка overscanCompensation на 3 также работает с более старыми версиями IOS, однако проблемы совместимости мне неизвестны, поскольку я ориентируюсь только на IOS 9 или более позднюю версию.

/Андерс

person Anders Cedronius    schedule 09.03.2016
comment
Я попытался добавить secondScreen.overscanCompensation=UIScreenOverscanCompensationNone; after // Получить объект экрана, представляющий внешний дисплей. UIScreen *secondScreen = [[UIScreen screens] objectAtIndex:1]; // Получаем границы экрана, чтобы можно было создать окно нужного размера. CGRect screenBounds = secondScreen.bounds; Но он не работает с тем же размером, что и размер по умолчанию, при первой активации зеркального отображения. - person Aaleks; 09.03.2016
comment
Я пробовал все варианты, но ничего не изменилось. UIScreen *secondScreen = [[UIScreen screens] objectAtIndex:1]; secondScreen.overscanCompensation=UIScreenOverscanCompensationInsetApplicationFrame; нет различий - person Aaleks; 09.03.2016
comment
Я действительно хочу добиться того же, что и в Powerpoint, когда у вас есть PowerPoint 16: 9, и при запуске режима слайд-шоу презентация на втором экране масштабируется, чтобы быть больше. - person Aaleks; 09.03.2016
comment
Когда я создаю настройку _secondWindow, границы второго экрана и показ _secondWindow и установка красного цвета фона. Он заполняет весь второй экран трансляции... Так что кажется, что мой UIWindow что-то блокирует... - person Aaleks; 09.03.2016
comment
Ok. похоже, вы должны использовать: CATransform3DMakeScale, чтобы компенсировать разницу в соотношении сторон. Вы знакомы с: CATransform3DMakeScale? - person Anders Cedronius; 09.03.2016