首页 > 代码库 > 【iOS开发-28】制造UITabBarController标签控制器的过程以及定制UITabBarItem文字图片的6种方式
【iOS开发-28】制造UITabBarController标签控制器的过程以及定制UITabBarItem文字图片的6种方式
一、一个简单的创造过程(实际项目不推荐这种方式,仅做演示理解原理用)
在AppDelegate.m中:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //创建一个到导航控制器 UIViewController *vc1=[[UIViewController alloc]init]; UINavigationController *nav1=[[UINavigationController alloc]initWithRootViewController:vc1]; nav1.title=@"首页"; //创建三个视图控制器 UIViewController *vc2=[[UIViewController alloc]init]; vc2.title=@"收藏"; UIViewController *vc3=[[UIViewController alloc]init]; vc3.title=@"搜索"; UIViewController *vc4=[[UIViewController alloc]init]; vc4.title=@"设置"; //创建一个数组把上面1个导航控制器和3个视图控制器的实例都装进去 NSArray *arr1=[[NSArray alloc]initWithObjects:nav1,vc2,vc3,vc4, nil]; //先实例化一个UITabBarController,然后把上面那个数组赋值给它的viewControllers属性 UITabBarController *tb1=[[UITabBarController alloc]init]; tb1.viewControllers=arr1; //最重要的是把上面实例化的标签控制器赋值给self.window的rootViewController,这样才能显示,和之前说的导航控制器显示是一样的 self.window.rootViewController=tb1; // Override point for customization after application launch. return YES; }
运行效果:
二、注意事项
(1)以上直接把数组赋值给标签控制器实例的viewControllers属性。而一般在做项目时不这样做,以上只是演示整个原理实现的过程。
(2)UITabBarController有两个子视图,一个是UITabBar部分,它里面放得时UITabBarItem就是下面四个切换的标签那一块。另一个是内容部分,就是几个视图。我们点击不同的标签,就会切换显示不同的视图。所以我们加载视图控制器的话,可能在针对视图那一块进行修改。而定制标签的话,是针对UITabBarItem进行修改。
(3)尺寸,UITabBarItem有图片icon也有文字,图片是50*50。具体的参数,点击这里。
三、UITabBarItem属性介绍及6种创建方式
我们创建了6个视图控制器,然后把它们的头文件导入进来,所以在AppDelegate.m文件中:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //第一种方式:通过导航控制器的tabBarItem来调用image属性 ViewController *vc0=[[ViewController alloc]init]; UINavigationController *nav0=[[UINavigationController alloc]initWithRootViewController:vc0]; //用nav0.tabBarItem.title=@"界面1";来赋值标题时用.title取值取不到, //用以下方式赋值标题,可以用.tabBarItem.title取值,但是以下方式直接把navigationItem.title也一并赋值了 //优先使用以下的方法 nav0.title=@"界面1"; //赋值图片 nav0.tabBarItem.image=[UIImage imageNamed:@"Slice@1x.png"]; //第二种方式:通过视图控制器的tabBarItem使用setFinishedSelectedImage方法,设置选中未选中图片状态 //不过这种方法貌似不被推荐不能使用了,在iOS7中已被抛弃 //所以推荐使用initWithTitle:image:selectedImage:这个初始化方法 ViewController1 *vc1=[[ViewController1 alloc]init]; //vc1.title=@"界面2"; //[vc1.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"1@1x.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"1-selected@1x.png"]]; UITabBarItem *tb0=[[UITabBarItem alloc]initWithTitle:@"界面2" image:[UIImage imageNamed:@"Slice@1x.png"] selectedImage:[UIImage imageNamed:@"Slice-selected@1x.png"]]; vc1.tabBarItem=tb0; //第三种方式:通过视图控制器的tabBarItem来调用image属性 ViewController2 *vc2=[[ViewController2 alloc]init]; vc2.title=@"界面3"; vc2.tabBarItem.image=[UIImage imageNamed:@"Slice@1x.png"]; //第四种方式:设置徽标,badgeValue是tabBarItem的一个属性,值是字符串 ViewController3 *vc3=[[ViewController3 alloc]init]; vc3.title=@"界面4"; vc3.tabBarItem.image=[UIImage imageNamed:@"Slice@1x.png"]; vc3.tabBarItem.badgeValue=http://www.mamicode.com/@"6";>
(1)tabbar的图标只能显示5个,多于5个则统统归置到more里面,这个more事系统自带的图标。
(2)主要由两种方式:一种是直接在利用已有的导航控制器或者视图控制器的.title和.tabBarItem.image属性来设置文字和图片。还有一种是先创建一个UITabBarItem(文字未选中图片选中图片等)然后把这个UITabBarItem赋值给导航控制器或者视图控制器的.tabBarItem属性。
(3)推荐使用第二种方法,因为它在创建UITabBarItem时可以一次性的把文字、选中图片、未选中图片等不同状态都定义出来。
【iOS开发-28】制造UITabBarController标签控制器的过程以及定制UITabBarItem文字图片的6种方式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。