今天用到了关于 UITabBarController,看到设计图中的那些效果和系统默认的不一样 所以赶紧上网找些资料去
发现关于它的自定义不少 可是好用的不是很多 大部分都是一样的 并且我用了之后效果不是很明显
但是经过看别人的 总算是组合出来了点结果
首先是修改背景
{
self.tabBarController = [[UITabBarController alloc] init];
//定义一个view 里面是一个背景图片
UIView *v = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 49)];
v.backgroundColor = [UIColor clearColor];
UIImageView *img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"new-nav-bg.png"]];
img.frame = CGRectMake(0,0, 320,49);
img.contentMode = UIViewContentModeScaleToFill;
[v addSubview:img];
//这句话是重点 网上都是把数字1 写成了 0 但是我写0 的时候不能显示效果 1就可以
[self.tabBarController.tabBar insertSubview:v atIndex:1];
}
其实直接用一幅图片也行的
{
UIImageView *img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"new-nav-bg.png"]];
img.frame = CGRectMake(0,0, 320,49);
img.contentMode = UIViewContentModeScaleToFill;
[self.tabBarController.tabBar insertSubview:img atIndex:1];
}
这样就完成了 效果如下:
其实每个图片都是黑色的 系统默认会加上一些效果 譬如选中 或者没有被选中的时候 如果使用
[con2.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"tab3.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"tab2.png"]];
con2是tab2 对应的视图控制器 这样自定义选中和未选中的图片之后就完全自己控制了效果如下 并且图片大小不会改变
还有就是有时候需要进行对tabar的暂时的隐藏或者显示 如果使用 self.tabBarController.tabBar.hidden = YES; 可能是隐藏了 但是tab bar 的位置并没有被占去 而是显示黑色的一条 最后我找到了一个解决的方法
aboutViewCon.hidesBottomBarWhenPushed = YES;//跳入该页面的时候隐藏掉tabbar
[self.navigationController pushViewController:aboutViewCon animated:NO];
aboutViewCon.hidesBottomBarWhenPushed = NO;//跳进去后该页面的时显示tabbar
这样就完美解决了问题
转帖:http://www.maoegg.com/uitabbarcontroller-set-of-custom-background-image-selected-and-unselected/