Uipageviewcontroller страница управления слишком близко к домашней панели на iPhone X iOS 11


У меня есть программа с одним контроллером главного вида, который включает в себя кнопку, которую пользователь может нажать, чтобы отобразить 4 страницы "быстрой справки" через UIPageViewController. Эти 4 страницы являются QuickHelpViewController0ID-QuickHelpViewController3ID, и каждая из них является стандартной UIViewController. Когда они нажимают на кнопку, я запускаю это:

-(void)showQuickHelp
{
    // Load the quick help page view controller
    self.quickHelpPageVC = [self.storyboard instantiateViewControllerWithIdentifier:@"QuickHelpPageViewControllerID"];
    self.quickHelpPageVC.dataSource = self;

    // Create initial quick help page
    UIViewController *quickHelpVCA = [self quickHelpVCForPageIndex:0];
    NSArray <UIViewController *> *quickHelpVCs = @[quickHelpVCA];

    // And assign it to the page VC
    [self.quickHelpPageVC setViewControllers:quickHelpVCs direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];

    [self presentViewController:_quickHelpPageVC animated:YES completion:nil];
}  // showQuickHelp:

Я также предоставляю UIPageViewControllerDataSource для создания каждой из 4 страниц по мере необходимости, когда пользователь переходит к следующей/предыдущей странице.

Это прекрасно работает на iOS 9.3 и 10.x. он также работает на 11.0 для все устройства, кроме iPhone X (симулятор). При этом строка из 4 точек индикатора страницы находится далеко внизу экрана, всего на 1 или 2 пикселя выше новой "домашней панели", которую предоставляет iOS 11 (сдвиньте вверх, чтобы переключать приложения и т. д.).

Я нашел видео от Apple под названием создание приложений для iPhone X , где разработчик обсуждает исправление подобной проблемы, но в этом случае его решение состояло в том, чтобы просто изменить авто-макет, чтобы ограничить ребенка UIPageControl в нижней" безопасной области " вместо верхней. традиционное руководство по компоновке дна. Но я не использую UIPageControl на другом контроллере вида; я использую UIPageViewController, и я не вижу никакого способа контролировать расположение элементов управления страницей в нижней части окна. (Да, я включил опцию "Использовать руководства по компоновке безопасных областей" в Interface Builder.)

Я не могу себе представить, что iOS 11 неправильно определяет размер UIPageViewController по умолчанию в моем сценарии, и я не вижу никакого очевидного способа исправить это. Есть предложения?

2 9

2 ответа:

Исправление для этого происходит в 11.2

Https://9to5mac.com/2017/10/30/ios-11-2-beta-1/

Уикит - Разрешенные Вопросы

Отображение элемента управления страницей в UIPageViewController на iPhone X больше не перекрывает индикатор home в нижней части экрана. (34478195)

У меня была та же проблема, но я обнаружил, что если я снимаю флажок "расширить края - под нижними полосами" на главном контроллере вида, точки перемещаются вверх и появляются правильно для iPhone X на симуляторе. К сожалению, он также перемещает точки вверх на всех других устройствах... возможно, это не проблема, если на странице не слишком много, но для меня это усекло одну страницу с большим количеством текста на ней.

Это определенно похоже на ошибку, поэтому я подожду, пока Apple, надеюсь, исправит проблему, так как я бы не хотел ставить неприятный хаки, чтобы программно изменить флаг extend Edge under bottom bars только для iPhone X