自定义tabBar

本文介绍了一种使用Objective-C自定义UITabBarController的实现方法,通过创建XNTabBarController类来替换默认的底部导航栏,并展示了如何添加自定义按钮XNTabBarButton以实现不同的视觉效果和交互。
摘要由CSDN通过智能技术生成
  1. //  
  2. //  XNTabBarController.m  
  3. //  
  4. //  
  5. //  Created by neng on 14-6-19.  
  6. //  Copyright (c) 2014年 neng. All rights reserved.  
  7. //  
  8.   
  9. #import "XNTabBarController.h"  
  10. #import "Common.h"  
  11. #import "XNTabBarButton.h"  
  12.   
  13. @interface XNTabBarController ()  
  14.   
  15. @property (nonatomicweak) UIButton *selectedBtn;  
  16. @end  
  17.   
  18. @implementation XNTabBarController  
  19.   
  20. (void)viewDidLoad  
  21.     [super viewDidLoad];  
  22.     //下面两个方法在开发中是经常会用到的  
  23. //    NSLog(@"%s",__func__);  
  24. //    NSLog(@"%@",self.view.subviews); //能打印出所有子视图,和其frame  
  25.     LogFun;  
  26.     LogSubviews(self.view);  
  27.   
  28.   
  29.     //删除现有的tabBar  
  30.     CGRect rect self.tabBar.frame 
  31.     [self.tabBar removeFromSuperview];  //移除TabBarController自带的下部的条  
  32.   
  33.     //测试添加自己的视图  
  34.     UIView *myView [[UIView alloc] init];  
  35.     myView.frame rect;  
  36.     myView.backgroundColor [UIColor redColor];  
  37.     [self.view addSubview:myView];  
  38.   
  39.     for (int 05i++)  
  40.         //UIButton *btn [[UIButton alloc] init];  
  41.         XNTabBarButton *btn [[XNTabBarButton alloc] init];  
  42.           
  43.         NSString *imageName [NSString stringWithFormat:@"TabBar%d"+ 1];  
  44.         NSString *imageNameSel [NSString stringWithFormat:@"TabBar%dSel"+ 1];  
  45.   
  46.         [btn setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];  
  47.         [btn setImage:[UIImage imageNamed:imageNameSel] forState:UIControlStateSelected];  
  48.   
  49.         CGFloat i myView.frame.size.width 5 
  50.         btn.frame CGRectMake(x, 0myView.frame.size.width 5myView.frame.size.height);  
  51.   
  52.         [myView addSubview:btn];  
  53.           
  54.         btn.tag i;//设置按钮的标记, 方便来索引当前的按钮,并跳转到相应的视图  
  55.   
  56.         //带参数的监听方法记得加"冒号"  
  57.         [btn addTarget:self action:@selector(clickBtn:) forControlEvents:UIControlEventTouchUpInside];  
  58.   
  59.         //设置刚进入时,第一个按钮为选中状态  
  60.         if (0 == i)  
  61.             btn.selected YES 
  62.             self.selectedBtn btn;  //设置该按钮为选中的按钮  
  63.          
  64.      
  65.  
  66.   
  67.   
  68. (void)clickBtn:(UIButton *)button  
  69.     //1.先将之前选中的按钮设置为未选中  
  70.     self.selectedBtn.selected NO 
  71.     //2.再将当前按钮设置为选中  
  72.     button.selected YES 
  73.     //3.最后把当前按钮赋值为之前选中的按钮  
  74.     self.selectedBtn button;  
  75.       
  76.     //4.跳转到相应的视图控制器. (通过selectIndex参数来设置选中了那个控制器)  
  77.     self.selectedIndex button.tag 
  78.  
  79.   
  80. @end  

 

XNTabBarButton.h

 

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #import   
  2.   
  3. @interface XNTabBarButton UIButton  
  4.   
  5. @end  

 

 

XNTabBarButton.m

 

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #import "XNTabBarButton.h"  
  2.   
  3. @implementation XNTabBarButton  
  4.   
  5. (void)setHighlighted:(BOOL)highlighted{  
  6. //    [super setHighlighted:highlighted];  
  7.  
  8.   
  9. @end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值