问题描述
我在适配完iOS 26时发现一个很奇怪的问题:
在第一次手势返回根页面时,tabBar没有渐显动画直接显示在顶部。但是如果第一次没有返回,再次手势返回时则有渐显动效。如下图所示:(测试设备iPhone 17;iOS 26.2)
代码实现
一开始代码实现如下,在跳页的时候使用hidesBottomBarWhenPushed来隐藏tabBar
ini
SecondVC *secondVC = [[SecondVC alloc] init];
secondVC.titleName = @"首页";
secondVC.hidesBottomBarWhenPushed = YES; // 隐藏tabbar
UIViewController *currentVC = self.window.rootViewController;
if ([currentVC isKindOfClass:[UITabBarController class]]) {
UITabBarController *tabBarController = (UITabBarController *)currentVC;
UINavigationController *homeNav = (UINavigationController *)tabBarController.viewControllers[0];
[homeNav pushViewController:secondVC animated:YES];
}
后面经过测试,发现使用[tabBarController setTabBarHidden:NO animated:animated]; 就正常渐显了。
关键代码如下
- 创建首页的UINavigationController时设置代理
ini
RootTabBarController *tabBarController = [[RootTabBarController alloc] init];
self.tabController = tabBarController;
// 设置首页tab
UINavigationController *homeNav = [[UINavigationController alloc] initWithRootViewController:homeVC];
homeNav.tabBarItem.title = @"首页";
homeNav.tabBarItem.image = [UIImage systemImageNamed:@"house"];
// 设置代理
homeNav.delegate = tabBarController;
// 设置我的tab
UINavigationController *profileNav = [[UINavigationController alloc] initWithRootViewController:profileVC];
profileNav.tabBarItem.title = @"我的";
profileNav.tabBarItem.image = [UIImage systemImageNamed:@"person"];
// 设置代理
profileNav.delegate = tabBarController;
[tabBarController setViewControllers:@[homeNav, profileNav]];
self.window.rootViewController = tabBarController;
[self.window makeKeyAndVisible];
- 实现
UINavigationControllerDelegate
objectivec
#pragma mark - UINavigationControllerDelegate
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
// 判断是否为根视图控制器
if ([navigationController.viewControllers indexOfObject:viewController] == 0) {
// 返回到根页面,显示tabbar
[self setTabBarHidden:NO animated:animated];
} else {
// 跳转到子页面,隐藏tabbar
[self setTabBarHidden:YES animated:animated];
}
}
以上,希望有帮助到大家