您的位置:首页 > 产品设计 > UI/UE

关于UITabBarController的UITabBar隐藏问题

2016-03-11 16:40 411 查看
最开始的时候我用的

- (void)hideTabBar {

if (self.tabBarController.tabBar.hidden
== YES) {

return;
}

UIView *contentView;

if ( [[self.tabBarController.view.subviews
objectAtIndex:0]
isKindOfClass:[UITabBar
class]] )
contentView = [self.tabBarController.view.subviews
objectAtIndex:1];

else
contentView = [self.tabBarController.view.subviews
objectAtIndex:0];

contentView.frame =
CGRectMake(contentView.bounds.origin.x, contentView.bounds.origin.y,
contentView.bounds.size.width, contentView.bounds.size.height
+ self.tabBarController.tabBar.frame.size.height);

self.tabBarController.tabBar.hidden =
YES;
}

- (void)showTabBar

{

if (self.tabBarController.tabBar.hidden ==
NO)
{

return;
}
UIView *contentView;

if ([[self.tabBarController.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]]){

contentView = [self.tabBarController.view.subviews objectAtIndex:1];
}else{
contentView = [self.tabBarController.view.subviews objectAtIndex:0];
}
contentView.frame = CGRectMake(contentView.bounds.origin.x, contentView.bounds.origin.y, contentView.bounds.size.width, contentView.bounds.size.height -
self.tabBarController.tabBar.frame.size.height);

self.tabBarController.tabBar.hidden =
NO;
}

但是发现控制器里面有多层的话就隐藏就会失效,而且这个方法一般用在iOS7之前的系统,iOS7之后出现了

hidesBottomBarWhenPushed

这个属性,确实是非常的神奇,一句话就可以隐藏UITabBar。

根据我的项目中的经验,要么项目中全用hidesBottomBarWhenPushed 要么全用iOS7之前的方法。

项目中两者混用确实把我给坑了一把(比如融云的SDK不知道用的什么方法,而你的项目却用的iOS7之前的方法),建议以后全用hidesBottomBarWhenPushed避免不必要的问题发生,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: