在UINavigationController的基类重写pushViewController代理方法,在push的时候修改一下tabBar的frame。
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
if (self.viewControllers.count > 0) {
if ([viewController conformsToProtocol:@protocol(XYTransitionProtocol)] && [self isNeedTransition:viewController]) {
viewController.hidesBottomBarWhenPushed = NO;
}else {
viewController.hidesBottomBarWhenPushed = YES;
}
}
[super pushViewController:viewController animated:animated];
// 修改tabBar的frame
CGRect frame = self.tabBarController.tabBar.frame;
frame.origin.y = [UIScreen mainScreen].bounds.size.height - frame.size.height;
self.tabBarController.tabBar.frame = frame;
}