TabBarController的使用
凡是加入的标签控制器的视图控制器都有tabBarItem和tabBarController两个属性
什么时候使用系统自带的tabBarController中的TabBar?
1.项目没有什么特别需求
2.美工能够给到30*30的镂空图片
如何使用系统自带的tabBarController?
1.点击StoryBoard,拖一个UITabBarController,并将其设置为初始化视图控制器
2.根据项目需求设置viewControllers
3.设置tabBar
1>点击相对应的tabItem,根据需求设置title和image
凡是加入的标签控制器的视图控制器都有tabBarItem和tabBarController两个属性
可以到对应的视图控制器中设置tabBarItem
自定义tabBarItem 当tabBar有嵌入导航控制器时需要通过navigationController作为属性媒介
//将系统的tabBar覆盖
view = [[UIView alloc]initWithFrame:self.tabBar.bounds];
view.backgroundColor = [UIColor whiteColor];
[self.tabBar addSubview:view];
for (int i = 0; i<4; i++) {
//从IB载入自定义的TabBarItem(view)
CustonTabBarItem *item = [[[NSBundle mainBundle]loadNibNamed:@"CustonTabBarItem" owner:self options:nil] lastObject];
item.frame = CGRectMake(0+i*self.view.frame.size.width/4, 0, self.view.frame.size.width/4, 44);
if (i==1) {
[item.imageButton setImage:[UIImage imageNamed:@"demo1.jpg"] forState:0];
[item.imageButton addTarget:self action:@selector(publishAction:) forControlEvents:UIControlEventTouchUpInside];
}else{
//选中状态与非选中状态的照片
[item.imageButton setImage:[UIImage imageNamed:@"demo.jpg"] forState:0];
[item.imageButton setImage:[UIImage imageNamed:@"demo2.jpg"] forState:UIControlStateSelected];
[item.imageButton addTarget:self action:@selector(changeIndex:) forControlEvents:UIControlEventTouchUpInside];
}
//设置标记,判断点击的button
item.imageButton.tag = 100+i;
item.badgeLabel.text=@"3";
if (i==0) {
item.imageButton.selected = YES;
tempButton = item.imageButton;
}
[view addSubview:item];
}
-(void)publishAction:(UIButton *)sender{
[self presentViewController:[ViewController new] animated:YES completion:^{
}];
}
//选中状态与非选中状态的处理
-(void)changeIndex:(UIButton *)sender{
//方法一
// for (CustonTabBarItem *ele in view.subviews) {
// ele.imageButton.selected = NO;
// }
// sender.selected = YES;
//方法二 可判断双击
if (sender.tag == tempButton.tag) {
//同一个item 连续点击两下
NSLog(@"点击两下");
return;
}
tempButton.selected = NO;
sender.selected = YES;
tempButton = sender;
if (sender.tag >101) {
self.selectedIndex = sender.tag - 101;
}else
self.selectedIndex = sender.tag -100;
}