【iOS发展-28】制造业UITabBarController标记控制器、定制UITabBarItem文字图像6途径和More评论

简介:

一个、一个简单的制作过程(实际工程中不建议这样的方式,不要只展示所用原理的理解)


在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=@"6";
    
    //第五种方式:通过先设置一个系统自带的UITabBarItem,再把它赋值给视图控制器的tabBarItem
    //用这样的方式创建后。再设置.title或者.tabBarItem.Image就不起作用了
    ViewController4 *vc4=[[ViewController4 alloc]init];
    UITabBarItem *tb1=[[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:0];
    vc4.tabBarItem=tb1;
    
    //第六种方式:通过先初始化一个带有标题和图片的UITabBarItem,然后把它赋值给视图控制器的tabBarItem
    //相当于分别对.title和.tabBarItem.image进行设置,效果是相似的
    //这样的方式不推荐使用
    ViewController5 *vc5=[[ViewController5 alloc]init];
    UITabBarItem *tb2=[[UITabBarItem alloc]initWithTitle:@"界面6" image:[UIImage imageNamed:@"Slice@1x.png"] tag:1];
    vc5.tabBarItem=tb2;
    
    //下面是整一个数组装上面的那些个,然后初始化一个UITabBarController再把数组赋值给UITabBarController的viewControllers属性
    //最后别忘了,把window的根视图控制器改动一下
    NSArray *arr2=[[NSArray alloc]initWithObjects:nav0,vc4,vc1,vc3,vc2,vc5, nil];
    UITabBarController *tbCon1=[[UITabBarController alloc]init];
    tbCon1.viewControllers=arr2;
    self.window.rootViewController=tbCon1;
    
    // Override point for customization after application launch.
    return YES;
}

(1)tabbar的图标仅仅能显示5个。多于5个则统统归置到more里面,这个more事系统自带的图标。


(2)主要由两种方式:一种是直接在利用已有的导航控制器或者视图控制器的.title和.tabBarItem.image属性来设置文字和图片。另一种是先创建一个UITabBarItem(文字未选中图片选中图片等)然后把这个UITabBarItem赋值给导航控制器或者视图控制器的.tabBarItem属性。


(3)推荐使用另外一种方法,由于它在创建UITabBarItem时能够一次性的把文字、选中图片、未选中图片等不同状态都定义出来。


四、关于tabbar上得More


(1)当标签多余5个时,标签控制器会自己主动创建一个moreNavigationController。即我们点击More。它是一个导航控制器。


(2)点击More之后我们能够点击编辑。然后通过拖动相应的图标来又一次排列它们的显示顺序。


五、关于英文和中文语言的问题


我们上面的More和Edit都是英文。怎样显示成中文呢?须要用到本地化。

该程序默认仅仅提供英文一种语言,所以无论用户手机设置成什么语言,仅仅要涉及到系统自带的文字都会是英文。我们须要给程序设置成两种语言(中文和英文)。这样程序会依据用户手机的语言设置显示对应的语言。


方法:在Info.plist中添加一个Localizations,并给这个Localizations添加一个选项是中文简体(默认仅仅有英文)。



如此。打完收工!

(假设你的文字仍然是英文,那么点击CMD+SHIFT+H回主界面,然后Setting转到模拟器语言可以设置为简体中国)

版权声明:本文博客原创文章,博客,未经同意,不得转载。





本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/4660647.html,如需转载请自行联系原作者


相关文章
|
人工智能 文字识别 API
iOS MachineLearning 系列(4)—— 静态图像分析之物体识别与分类
本系列的前几篇文件,详细了介绍了Vision框架中关于静态图片区域识别的内容。本篇文章,我们将着重介绍静态图片中物体的识别与分类。物体识别和分类也是Machine Learning领域重要的应用。通过大量的图片数据进行训练后,模型可以轻易的分析出图片的属性以及图片中物体的属性。
242 0
|
iOS开发
iOS 15后设置导航控制器的导航条背景色无效的问题处理
iOS 15后设置导航控制器的导航条背景色无效的问题处理
378 0
|
算法 API iOS开发
iOS MachineLearning 系列(3)—— 静态图像分析之区域识别
本系列的前一篇文章介绍了如何使用iOS中自带的API对图片中的矩形区域进行分析。在图像静态分析方面,矩形区域分析是非常基础的部分。API还提供了更多面向应用的分析能力,如文本区域分析,条形码二维码的分析,人脸区域分析,人体分析等。本篇文章主要介绍这些分析API的应用。
225 0
|
10月前
|
存储 缓存 iOS开发
iOS 轻量化动态图像下载缓存框架实现
日常开发过程中,图片的下载会占用大量的带宽,图片的加载会消耗大量的性能和内存,正确的使用图片显得尤为重要。 同样也经常需要在各类型控件上读取网络图片和处理本地图片,例如:UIImageView、UIBtton、NSImageView、NSButton等等。
iOS 轻量化动态图像下载缓存框架实现
|
12月前
|
存储 调度 开发者
iOS 子控制器
iOS 子控制器
91 0
|
人工智能 API iOS开发
iOS MachineLearning 系列(2)—— 静态图像分析之矩形识别
本系列文章将完整的介绍iOS中Machine Learning相关技术的应用。本篇文章开始,我们将先介绍一些与Machine Learning相关的API的应用。使用这些API可以快速方便的实现很多如图像识别,分析等复杂功能,且不会增加应用安装包的体积。
225 0
|
文字识别 算法 Swift
毕业设计在iOS上使用OpenCV实现图片中的文字框选文字识别
毕业设计在iOS上使用OpenCV实现图片中的文字框选文字识别
470 0
毕业设计在iOS上使用OpenCV实现图片中的文字框选文字识别
|
API iOS开发 Perl
iOS UIImageView文字头像,首字母缩略头像
iOS UIImageView文字头像,首字母缩略头像
iOS UIImageView文字头像,首字母缩略头像
|
iOS开发
iOS开发 - 使用UISearchController跳转新控制器时搜索框依然出现
iOS开发 - 使用UISearchController跳转新控制器时搜索框依然出现
106 0
|
iOS开发
iOS开发 - 同一段文字显示不同颜色和字体
iOS开发 - 同一段文字显示不同颜色和字体
87 0