_tabBarController = [[UITabBarController alloc]init]; [_tabBarController setViewControllers:@[recNav,feedNav,postNav,loginNav]]; // 拿到 TabBar 在拿到想应的item UITabBar *tabBar = _tabBarController.tabBar; UITabBarItem *item0 = [tabBar.items objectAtIndex:0]; UITabBarItem *item1 = [tabBar.items objectAtIndex:1]; UITabBarItem *item2 = [tabBar.items objectAtIndex:2]; UITabBarItem *item3 = [tabBar.items objectAtIndex:3]; // 对item设置相应地图片 item0.selectedImage = [[UIImage imageNamed:@"recognize-1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];; item0.image = [[UIImage imageNamed:@"recognize"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; item1.selectedImage = [[UIImage imageNamed:@"life-1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];; item1.image = [[UIImage imageNamed:@"life"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; item2.selectedImage = [[UIImage imageNamed:@"edit-1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];; item2.image = [[UIImage imageNamed:@"edit"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; item3.selectedImage = [[UIImage imageNamed:@"setting-1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];; item3.image = [[UIImage imageNamed:@"setting"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
[item1 setImageInsets:UIEdgeInsetsMake(6, 0, -6, 0)];
2.隐藏原有的TabBar,使用UIView彻底从新定义TabBar,ios
这样的好处就是,定制化的程度很高,并且不少东西能够彻底推倒重来,可是有一个很严重的问题,当使用ide
viewController.hidesBottomBarWhenPushed = YES的时候,仍是没法隐藏UITabBar,这个始终没法隐藏,除非采用自定制的动画移开这个UIView或者设置post
这个为Hidden, 最重要的问题也在这里, 因此采用隐藏原有的TabBar的方式以后不少人抱怨没法经过viewController.hidesBottomBarWhenPushed = YES动画
来隐藏TabBar,网上有不少相似的代码,我这里就不贴源代码了,问题已经分析出来了。ui
网易新闻的iOS客户端就是这样的方式实现的,有一点点小的瑕疵spa
还有一种类型的TabBar可使用这样的方式来实现,上截图3d
这个就彻底是重写了TabBar,并且和之前的系统原生的没有任何关系了,可是用的很少。code