iOS中关于自定义Tabbar
来源:互联网 发布:simpleadapter源码 编辑:程序博客网 时间:2024/06/05 21:50
自定义Tabbar Item
方法一:完全自定义tabbar,将系统tabbar删除,并将自定义的view加载到tabbar的位置
优点:可以完全自定义,实现自己想要的特殊效果缺点:push过,隐藏和展示tabbar比较麻烦
1.直接代码:
- (void)viewDidLoad { [super viewDidLoad]; [self.tabBar removeFromSuperview]; //data _arrImgName = @[@{kCUSIMG:@"icon_tab_1_normal",kSELIMG:@"icon_tab_1_selected",kTITLE:@"首页"},@{kCUSIMG:@"icon_tab_2_normal",kSELIMG:@"icon_tab_2_selected",kTITLE:@"业务"},@{kCUSIMG:@"icon_tab_3_normal",kSELIMG:@"icon_tab_3_selected",kTITLE:@"我的"},@{kCUSIMG:@"icon_tab_4_normal",kSELIMG:@"icon_tab_4_selected",kTITLE:@"更多"}]; [self customTabBar]; [self creatViewControllers]; self.cusTool.backgroundColor = [UIColor whiteColor]; [self.view addSubview:self.cusTool];}
2.自定义的核心代码
-(void)customTabBar{ float kMargin = (kWidth-kTabImgW*4)/5; float kLeftMargin = 0.5*kMargin; _cusTool = [[UIView alloc]initWithFrame:CGRectMake(0, kHeight-49, kWidth, 49)]; for (int i = 0; i<4; i++) { CustomButton *btn = [[CustomButton alloc]initWithFrame:CGRectMake(kMargin*i+kLeftMargin+((kWidth-3*kMargin-2*kLeftMargin)/4.0)*i, 2, kTabImgW, 47)]; btn.imageEdgeInsets = UIEdgeInsetsMake(1, 12, 1, 12); [btn setImage:[UIImage imageNamed:[_arrImgName[i] objectForKey:kCUSIMG]] forState:UIControlStateNormal]; [btn setImage:[UIImage imageNamed:[_arrImgName[i] objectForKey:kSELIMG]] forState:UIControlStateSelected]; [btn setTitle:[_arrImgName[i] objectForKey:kTITLE] forState:UIControlStateNormal]; [btn setTitleColor:[UIColor grayColor] forState:UIControlStateNormal]; [btn setTitleColor:[UIColor orangeColor] forState:UIControlStateSelected]; btn.rateFloatTitle = kTabImgH/47.0; btn.titleLabel.font = [UIFont systemFontOfSize:12.0f]; btn.tag = i+1000; [btn addTarget:self action:@selector(clickToChangeVC:) forControlEvents:UIControlEventTouchUpInside]; [self.cusTool addSubview:btn]; if (i==0) { self.seleBtn = btn; self.seleBtn.selected = YES; } }}-(void)clickToChangeVC:(UIButton *)sender{ self.seleBtn.selected = NO; sender.selected = YES; self.seleBtn = sender; self.selectedIndex = sender.tag-1000;}
3.创建试图
-(void)creatViewControllers{ HomeController *homeVC = [[HomeController alloc]init]; homeVC.title = @"首页"; FinanceController *financeVC = [[FinanceController alloc]init]; financeVC.title = @"业务"; MeController *userVC = [[MeController alloc]init]; userVC.title = @"我的"; MoreController *moreVC = [[MoreController alloc]init]; moreVC.title = @"更多"; NSArray *VCs = @[homeVC,financeVC,userVC,moreVC]; NSMutableArray *navVCs = [NSMutableArray arrayWithCapacity:4]; for (UIViewController *controller in VCs) { UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:controller]; [navVCs addObject:nav]; } self.viewControllers = navVCs; self.tabBar.translucent = NO; self.selectedIndex = 0;}
方法二:直接用系统的tabbar设置一下
优点:展示和隐藏很方便 缺点:特别特殊的样式不适用
1.核心代码:
-(UITabBarItem *)creatCustomItemWithImgName:(NSString *)imgName selImg:(NSString *)selImgName title:(NSString *)title{ UITabBarItem *item = [[UITabBarItem alloc]initWithTitle:title image:[UIImage imageNamed:imgName] selectedImage:[[UIImage imageNamed:selImgName] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; [item setTitleTextAttributes:@{NSForegroundColorAttributeName:TabbarTitleColor}//TabbarTitleColor是自定义颜色 forState:UIControlStateNormal]; [item setTitleTextAttributes:@{NSForegroundColorAttributeName:TabbarTitleSelColor} forState:UIControlStateSelected]; return item;}
2.创建试图时,创建item
-(void)creatViewControllers{ HomeController *homeVC = [[HomeController alloc]init]; homeVC.title = @"首页"; homeVC.tabBarItem = [self creatCustomItemWithImgName:[_arrImgName[0] objectForKey:kCUSIMG] selImg:[_arrImgName[0] objectForKey:kSELIMG] title:"首页"]; homeVC.navigationController.navigationBar.translucent= NO; FinanceController *financeVC = [[FinanceController alloc]init]; financeVC.title = @"业务"; financeVC.tabBarItem = [self creatCustomItemWithImgName:[_arrImgName[1] objectForKey:kCUSIMG] selImg:[_arrImgName[1] objectForKey:kSELIMG] title:@"业务"]; financeVC.navigationController.navigationBar.translucent= NO; MeController *userVC = [[MeController alloc]init]; userVC.title = @"我的"; userVC.tabBarItem = [self creatCustomItemWithImgName:[_arrImgName[2] objectForKey:kCUSIMG] selImg:[_arrImgName[2] objectForKey:kSELIMG] title:@"我的"]; userVC.navigationController.navigationBar.translucent= NO; MoreController *moreVC = [[MoreController alloc]init]; moreVC.title = @"更多"; moreVC.tabBarItem = [self creatCustomItemWithImgName:[_arrImgName[3] objectForKey:kCUSIMG] selImg:[_arrImgName[3] objectForKey:kSELIMG] title:@"更多"]; moreVC.navigationController.navigationBar.translucent= NO; NSArray *VCs = @[homeVC,financeVC,userVC,moreVC]; NSMutableArray *navVCs = [NSMutableArray arrayWithCapacity:4]; for (UIViewController *controller in VCs) { UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:controller]; [navVCs addObject:nav]; } self.viewControllers = navVCs; self.tabBar.translucent = NO; self.selectedIndex = 0;}
1 0
- iOS中关于自定义Tabbar
- ios中自定义tabBar
- ios中自定义tabBar
- iOS开发中 自定义TabBar
- ios关于故事版的tabbar自定义
- IOS之自定义tabbar
- ios 自定义TabBar
- iOS 自定义tabbar
- iOS Swift 自定义tabbar
- IOS 自定义tabbar
- iOS自定义tabbar
- iOS 自定义tabBar
- iOS -- 自定义TabBar
- iOS 开发 自定义Tabbar
- iOS自定义TabBar
- IOS 自定义Tabbar
- iOS自定义tabBar
- iOS自定义tabbar
- HttpURLConnection Get和Post发送数据
- 内存泄露从入门到精通三部曲之基础知识篇
- Linux小白入门日志
- DUBBO的com.alibaba.dubbo.rpc.RpcException解决方法
- Selenium Webdriver : Element not found in the cache - perhaps the page has changed since it
- iOS中关于自定义Tabbar
- 一个网页菜单的CSS代码分析
- 工厂三兄弟之工厂方法模式
- 自定义ImageView系列 - 区域截图(下)
- 【算法分析】随机数的生成:均匀分布、正态、泊松 、瑞利
- obs多开方法
- Android开机无法自启动service
- maven + springmvc + mybatis + ehcache 搭建
- SqlServer:几种分页查询语句