TabBar перемещается, когда ViewController помещается в iPhone X

Недавно я добавил поддержку iOS 11 в своем приложении, и это началось. В принципе, всякий раз, когда ViewController добавляется в стек навигации, панель вкладок вылетает во время анимации.

Это происходит только в iPhone X, и это просто обычный TabBarController. Что вызывает это?

Что происходит

Ответ 1

Дополнительный ответ

Радар открыт об этой проблеме здесь.

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];

    // Disable tabBar shifts upward whenever a ViewController is pushed on iPhone X rdar://35098813
    BOOL isIPhoneX = ...
    if (isIPhoneX && UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation)) {
        [self.tabBar setFrame:CGRectMake(0, CGRectGetHeight(self.view.frame) - CGRectGetHeight(self.tabBar.frame), CGRectGetWidth(self.view.frame), CGRectGetHeight(self.tabBar.frame))];
    }
}

Оригинальный ответ

Я думаю, что это ошибка IOS 11. Вы можете удалить этот странный эффект, чтобы поместить этот код в свой подкласс UITabBarController.

- (void)viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];
    BOOL isIPhoneX = ...
    if (isIPhoneX && UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation)) {
        [self.tabBar setFrame:CGRectMake(0, self.view.frame.size.height - 83, 375, 83)];
    }
}

Решение тоже странно.:)