标签控制器 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;
}
tabBarController-标签控制器
最新推荐文章于 2024-06-16 15:43:04 发布