10

我最近在我的应用程序上添加了对 iOS 11 的支持,这开始发生了。基本上,每当将 ViewController 添加到导航堆栈时,标签栏都会在动画期间出现故障。

它只发生在 iPhone X 中,而这只是一个常规的 TabBarController。是什么原因造成的?

这是怎么回事

4

1 回答 1

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)];
    }
}

解决方案也很奇怪。:)

于 2017-11-09T09:28:05.190 回答