我最近在我的应用程序上添加了对 iOS 11 的支持,这开始发生了。基本上,每当将 ViewController 添加到导航堆栈时,标签栏都会在动画期间出现故障。
它只发生在 iPhone X 中,而这只是一个常规的 TabBarController。是什么原因造成的?
附加答案
关于这个问题的雷达是开放的。
- (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)];
}
}
解决方案也很奇怪。:)