UITabBarController在项目中用的不太频繁,但确实很多项目中必不可少的一个重要部分,今天来自己整理一下相关使用方法
- 在新建工程时发现有一个
Tabbed Application
选项,创建后的界面是这个样子的,感兴趣的童鞋可以自己研究一下
Tabbed Application - 言归正传,我们还是使用比较常用的
Single ViewApplication
来创建
1、UITabBarController
的基础设置
- 首先创建一个
tabBarController
继承自UITabBarController
,然后创建三个viewController
并添加下面的方法
- (void)setUpAllChildViewController{
// 创建子试图控制器
FirstViewController *firstVC = [[FirstViewController alloc] init];
[self addChildVC:firstVC title:@"第一页" image:@"tabbar_first" selectedImage:@"tabbar_first_selected"];
secondViewController *secondVC = [[secondViewController alloc] init];
[self addChildVC:secondVC title:@"第二页" image:@"tabbar_second" selectedImage:@"tabbar_second_selected"];
thirdViewController *thirdVC = [[thirdViewController alloc] init];
[self addChildVC:thirdVC title:@"第三页" image:@"tabbar_mine" selectedImage:@"tabbar_mine_selected"];
}
/**
* 添加一个子视图控制器
*
* @param childVC 自控制器
* @param title 标题
* @param image 图片
* @param selectedImage 选中图片
*/
- (void)addChildVC:(UIViewController *)childVC
title:(NSString *)title
image:(NSString *)image
selectedImage:(NSString *)selectedImage{
childVC.title = title;
//设置图片及其渲染模式
childVC.tabBarItem.image = [[UIImage imageNamed:image] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
childVC.tabBarItem.selectedImage = [[UIImage imageNamed:selectedImage]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
// 设置选中状态下文字样式
NSMutableDictionary *textAttrs = [NSMutableDictionary dictionary];
textAttrs[NSForegroundColorAttributeName] = [UIColor orangeColor];
textAttrs[NSFontAttributeName] = [UIFont systemFontOfSize:13];
[[UITabBarItem appearance] setTitleTextAttributes:textAttrs forState:UIControlStateSelected];
// 设置普通状态下文字样式
NSMutableDictionary *selectTextAttrs = [NSMutableDictionary dictionary];
selectTextAttrs[NSFontAttributeName] = [UIFont systemFontOfSize:13];
[[UITabBarItem appearance] setTitleTextAttributes:selectTextAttrs forState:UIControlStateNormal];
//给每一个子视图控制器都加一个导航控制器
UINavigationController *nvc = [[UINavigationController alloc]initWithRootViewController:childVC];
// 添加为子视图控制器
[self addChildViewController:nvc];
[UITableViewCell appearance].selectionStyle = UITableViewCellSelectionStyleNone;
}
//禁用tabbar双击
-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
UIViewController * vcSelected = tabBarController.selectedViewController;
if ([vcSelected isEqual:viewController]) {
return NO;
}
return YES;
}
- 然后在
viewDidLoad
中调用setUpAllChildViewController
方法 - 最后,在
AppDelegate
中创建该类并设置为rootViewController
就可以正常运行了
HHTabBarController *tb = [[HHTabBarController alloc]init];
self.window.rootViewController = tb;
[self.window makeKeyAndVisible];
2、其他应用唤醒APP时回到首页
//回到首页
[self.tabbar.childViewControllers[i] popToRootViewControllerAnimated:NO];
self.tabbar.selectedIndex = 0
//首页控制器
UINavigaitonController *nav=(UINavigaitonController *)self.tabbar.viewControllers[0];
UIViewController *vc=(UIViewController*)nav.viewControllers.lastObject;
3、如果不想要tabbar
是半透明
self.tabBarController.tabBar.translucent = NO;
最后,附上一篇自定义tabBarItem的文章。
网友评论