tabBarController-标签控制器

标签控制器 UITabBarController

1.创建一个系统定义的标签控制器,UITabBarController

UITabBarController *tabBarCtrl = [[UITabBarController alloc]init];
//要想使用标签控制器,先定义一个标签控制器

UIViewController *viewCtrl1 = [[UIViewController alloc]init];
viewCtrl1.view.backgroundColor = [UIColor blueColor];
viewCtrl1.title = @"第一页";
//定义第一个页面

UIViewController *viewCtel2 = [[UIViewController alloc]init];
viewCtel2.view.backgroundColor = [UIColor redColor];\
viewCtel2.title = @"第二页";
//定义第二个页面

tabBarCtrl.viewControllers = @[viewCtel2,viewCtrl1];
//创建数组,标签控制器的数组并将页面加载进数组

self.window.rootViewController = tabBarCtrl;
//将标签控制器在根界面显示出来

标签控制器的7个属性:
1.标签控制器的数组属性(viewControllers)
tabBarCtrl.viewControllers = @[viewCtrl, viewCtrl2, viewCtrl3, viewCtrl4, viewCtrl5, viewCtrl6];

4.标签控制器的元素自定义的属性,可选择是否可移动
tabBarCtrl.customizableViewControllers = @[viewCtrl6, viewCtrl3];

7.标签控制器的选中当前元素的属性,选中标签控制器的哪个元素
TabBar.selectedIndex = 0;

5.标签控制器的标签栏的属性,标签栏的按钮样式、颜色,重点在标签栏上面!
tabBarCtrl.tabBar.tintColor = [UIColor purpleColor];
//标签栏上的字体颜色
tabBarCtrl.tabBar.barTintColor = [UIColor greenColor]; 
//标签栏的颜色
tabBarCtrl.tabBar.barStyle = UIBarStyleBlack;   
//标签栏的样式
tabBarCtrl.tabBar.translucent = NO;
//半透明
    
6.标签控制器的协议属性id<UITabBarController> delegate

2.标签控制器的选中属性,选中的状态,TabBarCtrl.selectedViewController

3.标签控制器的moreNavigationController属性

标签控制器的tabBar的自定义:
定义一个可变数组形式的页面变量,
NSMutableArray *viewCtrls = [NSMutableArray array];
for(int i=1;i<5;i++){
	UIViewController *viewCtrl = [[UIViewController alloc]init];
	viewCtrl.view.backgroundColor = [UIColor ColorWithRed:i*0.2 green:i*0.2 blue:i*0.2 alpha:1];
	[viewCtrls addObjects:viewCtrl];

}

UITabBarController *tabBarCtrl = [[UITabBarController alloc]init];
tabBarCtrl.viewControllers = viewCtrls;
//标签控制器的页面已完成

//自定义的标签控制器的表现在标签栏上面,故用一个新类来创造标签栏
MyTabBar *myTabBar = [[MyTabBar alloc]init];
NSMutableArray *itemArray = [NSMutableArray array];

for(int i=1;i<5;i++){
	NSString *str = [NSString stringWithFormat:@"%d.png",i];
	UIImage *image = [UIImage imageNamed:str];
	//创建一个新的 MyTabBarItem 类,标签控制器的卖点,tabBar和tabBarItem,故可以创两个新的类来充分表现这两点

	MyTabBarItem *item = [[MyTabBarItem alloc]initWithImage:image title:str];
	[itemArray addObject:item];
}
myTabBar.items = itemsArray;
myTabBar.delegate = self;
//tabBarItem的图片和名称都已设置完成
[tarBabCtrl.tabBar addSubview:myTabBar];

self.window.rootViewController = tabBarCtrl;


MyTabBar.h 
一个方法:
- (void)tabBar:(MyTabBar *)tabBar didSelectIndex:(NSInteger)index;

两个属性:
@property (nonatomic, copy) NSArray *items;
@property (nonatomic, weak) id<MyTabBarDelegate> delegate;


MyTabBar.m //设置标签栏中的items
- (void)setItems:(NSArray *)items
{
    CGFloat width = self.frame.size.width / items.count;
    
    for (int i = 0; i < items.count; i++) {
        MyTabBarItem *item = [items objectAtIndex:i];
        //定义一个item
        UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
        //创建一个自定义的按钮
        [btn setImage:item.image forState:UIControlStateNormal];
        [btn addTarget:self action:@selector(didClicked:) forControlEvents:UIControlEventTouchUpInside];
        btn.frame = CGRectMake(i * width, 0, width, self.frame.size.height);
        // 按钮的常见三个设置
        btn.tag = i;
        //将按钮设置tag,按的时候判定tag值
        [self addSubview:btn];
        //将按钮显示在tabBar的item上
    }
}

- (void)didClicked:(UIButton *)sender
{
    if (_delegate && [_delegate respondsToSelector:@selector(tabBar:didSelectIndex:)]) {
        [_delegate tabBar:self didSelectIndex:sender.tag];
        //调用方法,根据按的哪一个标签tag,来确定按的哪一个按钮
    }
}
//这个按钮功能带有协议,不懂


MyTabBarItem.h 中
两个属性:
@property (nonatomic, strong) UIImage *image;
@property (nonatomic, copy) NSString *title;
一个方法:
- (id)initWithImage:(UIImage *)image title:(NSString *)title;


MyTabBarItem.m 中
- (id)initWithImage:(UIImage *)image title:(NSString *)title
{
    if (self = [super init]) {
        self.image = image;
        self.title = title;
    }
    return self;
}








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值