IOS开发之控件篇UITabBarControllor第一章 - 介绍
UITabBarControllor的基本样子

官方有个图介绍这个TabBar的结构,我们先来看看这个结构图

----------------------------------------------------
UITabBarControllor个人理解
经过我自己的个人理解,我重新归纳了一下
整个UITabBarControllor分开了几个部分
- 在这个Controllor里面有个ViewControllors(NSArray),不可变的列表,里面放的装的都是UIViewControllor,每一个controllor就是每一个tab的视图控制器(viewControllor),这个·
- 每一个视图控制器附带一个tab,选择到那个tab,就会显示对应的view.
-------------------------------------------------------------------------
UITabBarControllor-HelloWorld
下面是一个简单的例子:

//所有视图的开端,必须在appDelegate开始编写,下面的代码是在appDelegate.m里面编写
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
//创建主窗口
self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]];
//把tabbar controllor 设置为根视图
MyTabBarController *mt = [[MyTabBarController alloc]init];
self.window.rootViewController = mt;
[self.window makeKeyAndVisible];
//设置背景色,默认为黑色
// self.window.backgroundColor = [UIColor redColor];
return YES;
}
MyTabBarController.m
#import "MyTabBarController.h"
@interface MyTabBarController ()
@end
@implementation MyTabBarController
- (void)viewDidLoad {
[super viewDidLoad];
UIViewController *c1 = [[UIViewController alloc]init];
//设置tab bar item的名称
c1.tabBarItem.title = @"客户";
//设置view的背景色
c1.view.backgroundColor = [UIColor redColor];
//设置背景图
c1.tabBarItem.image = [UIImage imageNamed:@"customer2"];
UIViewController *c2 = [[UIViewController alloc]init];
c2.tabBarItem.title = @"列表";
c2.view.backgroundColor = [UIColor whiteColor];
c2.tabBarItem.image = [UIImage imageNamed:@"list"];
//添加视图两种方法
//第一种,不建议这种,这个list本身是NSArray,不变数组,所以每次添加使,项目内容不与之前项目相同会自动重建新的数组重新添加
// [self addChildViewController:c1];
// [self addChildViewController:c2];
//第二种方法
self.viewControllers=@[c1,c2];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
@end
-------------------------------------------------------------------------
TabBar的背景色
一般情况,TabBar是半透明的状态,如下图,红色的view会在tabbar中若隐若现

如果想修改它的底色可以设它的barTintColor,代码如下
self.tabBar.barTintColor = [UIColor whiteColor];

-------------------------------------------------------------------------
Tabbar的背景图
self.tabBar.backgroundImage = [UIImage imageNamed:@"tab_background"];
一般TabBar的size为:设备宽度(pt)x49(pt),例如Iphone5宽度为320ptx49pt,iPhone6宽度为375ptx49pt
在制作图片的大小时,一般都不需要关心宽度,因为会自动延伸,如下面的例子,
图片大小为:30pt × 49pt,测试环境为:Iphone6s


但是在高度方面需要比较注意,因为超出的部分会突出tabbar,如下面的例子,
图片大小为:215pt × 204pt,测试环境为:Iphone6s


-------------------------------------------------------------------------
TabBarItem的图片
TabBarItem图标大小建议是30ptx30pt,iPad 建议60ptx60pt,
c1.tabBarItem.image = [UIImage imageNamed:@"customer2"];


-------------------------------------------------------------------------
TabBarItem图片颜色
改变TabBar颜色的方法有两种,
- 第一种,采用原图片的颜色,选择图片,并在右边的菜单中选册渲染方式为Original image(原图),在Iphone中会显示为原图,这种情况有缺点,就是要手动设置选中和不选中的图片,否则选中与不选中时的图片颜色会一样
(完整图)
(参数设置)
(iPhone 上显示的图片)
- 第二种,可以设置tint color,tint color就是设置所有控件中,镂空的文字,图片或其它背景默认颜色块,例如UIButton里面的文字颜色,(提示:UILabel里面的文字颜色不会受影响)
系统如果找不到tint color默认为nil,自动会选取为蓝色,这个tintcolor会延续到所有子视图中,如父视图设置了,则子视图会延续父视图颜色,设置tint color的代码如下
self.tabBar.tintColor = [UIColor redColor];
(iPhone 上显示的图片)
-------------------------------------------------------------------------
TabBarItem的提示红点
如果我们想在TabBarItem旁边添加一个红点作提示,或者一个红色信息提示,下面找了几个方法
- 设置带信息的红点,红点内的信息是用户确定的,这种的缺点是红色点太大,代码如下


[itemOne setBadgeValue:@""]; //显示不带数字的小红点
[itemOne setBadgeValue:@"22"];//显示小红点 并且带数字
- 其它方法可以参考:http://www.cnblogs.com/niit-soft-518/p/4772515.html
IOS开发之控件篇UITabBarControllor第一章 - 介绍的更多相关文章
- IOS开发之控件篇UINavigationController第一章 - 介绍
UINavigationController是一个比较常见的控件,它连接个视图,例如一个视图走到另外一个视图,之间的联系都可以用这个NavigationController的方法 一般都会由两个部分组 ...
- IOS开发之控件篇UICollectionViewControllor第一章 - 普通介绍
1.介绍 UICollectionView和UICollectionViewControllor是IOS6.0后引入的新控件 使用UICollectionView必须实现三个接口: UICollect ...
- IOS开发之控件篇UITabBarControllor第二章 - 遮掩TableView问题
在IOS7.0以后UITabBar 里面放入一个UITableView会出现一个问题,Table会被TabBar掩盖了,当移动到最后一项的时候,永远看不到,如下面的例子,总共是99项,但是只能显示到9 ...
- IOS开发之控件篇UINavigationController第二章 - 标题
1.什么是标题(Title) NavigationController里面的viewcontroller,每一页都会有一个标题,如图3r就是这个页面的标题 2. 如何设置标题 一般都会在这个Navig ...
- 【ios开发】控件细究1:UITableView
工作了将近两个月,共接手两个项目,在项目中用的最多的就是UITableView了,但是也是问题出现的最多的地方,由于一开始不熟练,导致很多问题花了很长时间才解决.所以利用这两天空闲时间,好好梳理一下这 ...
- iOS开发--UIKit控件之UISearchBar(搜索栏)
今天因为需求原因,需要用到搜索控件:之前一直没有用到过这个控件,所以去百度了一下,找到一篇可以说很齐全的资料,感谢这位作者. 然而,我并没有找到可以更改字体大小的属性或方法,希望有知道的告诉我一声,谢 ...
- iOS开发-DatePicker控件
时间控件不管是Android还是iOS中都是必然存在的一个控件,具体的效果大同小异,显示日期,时间,iOS中有四种方式可以选择,Time, Date,Date and Time , Count Do ...
- iOS开发基础控件--UIButton
01 //这里创建一个圆角矩形的按钮 02 UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 03 ...
- iOS开发基础控件--UILabel
UILabel 的常见属性和方法: //创建UIlabel对象 UILabel* label = [[UILabel alloc] initWithFrame:self.view.bounds]; / ...
随机推荐
- [html]兼容 IE6 IE7 的简单网页框架
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Android Studio 初使用
Android Studio 更改Eclipse快捷键 Android Studio 更改编码 Android Studio 导包
- IOS开发涉及有点概念&相关知识点
前言,IOS是基于UNIX的,用C/C+/OC直通系统底层,不想android有个jvm. 首先还是系统架构的分层架构 1.核心操作系统层 Core OS,就是内存管理.文件系统.电源管理等 2.核心 ...
- Odoo10尝鲜: 退货
Odoo sale / purchase 在 v9 改进之后, 开立发票的入口 不再像之前的版本,有多个来源,例如 订单 交货单 记工单 分析分录 现在只有一个入口,只需要在 订单上开票,这样 ...
- css 常用样式
1. border-radius - 指定每个圆角 四个值: 第一个值为左上角,第二个值为右上角,第三个值为右下角,第四个值为左下角. 三个值: 第一个值为左上角, 第二个值为右上角和左下角,第三个值 ...
- 在Linux中让打印带颜色的字
echo显示带颜色,需要使用参数-e 格式如下: echo -e "\033[字背景颜色;文字颜色m字符串\033[0m" 例如: echo -e "\033[41;37 ...
- oracle添加和查看注释
1.给表加注释 COMMENT ON TABLE TABLENAME IS '用户表'; 2.查看表的COMMENT SELECT * FROM USER_TAB_COMMENTS WHERE TAB ...
- Excel VBA自动添加证书
---恢复内容开始--- 在说这个话题之前,我先解释一下为什么要加数字证书签名,它有什么作用,后面再解释如何添加.首先解释下证书添加的位置,如下图所示: 1.单击左上角的Office 按钮,选择右下角 ...
- BZOJ3329 Xorequ(数位DP)
题目大意:x xor 2x=3x(与x xor 3x=2x等价)求满足等式且小于n的x的个数,与满足等式小于2n的数的个数. 因为异或是不进位的二进制加法,那么因为结果正好和加法相同,那么说明x在二进 ...
- sublime text 3 技巧
sublime text 技巧 学习目的:熟悉sublime快捷键和功能,改进自己的工作方式. 学习流程:先把视频中涉及到的技巧记录下,再完整的看一遍所有的菜单和功能. 前端开发工具技巧介绍-Subl ...