这段时间了解下UITabBarController,今天把我遇到的问题和心得记录下。
网上有很多UITabBarController的资料,对于一些UITabBarController的基础性知识,在这里我就不啰嗦了。可以看这里(http://www.cnblogs.com/smileEvday/archive/2012/05/20/UITabBarController.html)。今天我要说的是自己的一些不同于网上的的心得。
官方的一副图片还是要贴出来。
我也按网上的方式做了一个UITabBarController的Demo。如下图
它的具体代码为:
- (void)viewDidLoad
{
[superviewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
_tabBar = [[UITabBarControlleralloc] init];
_tabBar.delegate =self;
_redViewController = [[RedViewControlleralloc] initWithNibName:nilbundle:nil];
_blueViewController = [[BlueViewControlleralloc] initWithNibName:nilbundle:nil];
NSArray *viewControllerArray = [NSArrayarrayWithObjects:_redViewController,_blueViewController,nil];
_tabBar.viewControllers = viewControllerArray;
_tabBar.view.frame =CGRectMake(0,0, self.view.bounds.size.width,200);
[self.viewaddSubview:_tabBar.view];
}
执行完上面代码发现以下几个问题:1.TabBar的背景色不对;
2.Item的标题位置不对,字体太小了;
3.Tab Bar的位置不对,不一定在底部吧。
4.Tab bar的高度不一定固定48这个高度的吧。
等等的需要处理的问题的。
第一个问题首先要理解Custom content和Tab bar的实际区域:图一很清楚的描述了一个UTabBarController包含了三部分。但是Custom Content和Tab Bar的范围是怎么样的呢?我开始一直以为Custom content不包括Tab Bar的范围,即CGRectMake(0,0,320,480)的 UITabBarController视图,Custom content就为432p大小,Tab Bar为48p(这个高度还待验证)。而实际情况是:Custom Content 为480p,TabBar只是覆盖在Custom Content上。如果Tabbar没有设置背景颜色或背景图片就会显示Custon Conten视图的颜色。
处理问题1:加背景颜色或背景图片
[_tabBar.tabBar setBackgroundColor:[UIColor redColor]];
[_tabBar.tabBar setBackgroundImage:[UIImage imageNamed:@"bottomBK.png"]];
处理问题2:加背景颜色或背景图片
UIOffset offset;
offset.horizontal = 0.0;
offset.vertical = -15.0;
[item setTitlePositionAdjustment:offset];
[item release];
处理问题3:调整Tab Bar的位置
_tabBar.tabBar.frame = CGRectMake(0, 50, self.view.bounds.size.width, 200);
就是y为50的,高度为200的区域内了。
还有几个未处理好的问题:
1.Tab Bar的项(item)加入的图片大于Tab Bar的高度的话,没有办法调整了。
UITabBarItem *item = [[UITabBarItemalloc]initWithTitle:@"asdfas"image:[UIImageimageNamed:@"[email protected]"]selectedImage:[UIImageimageNamed:@"[email protected]"]];
self.tabBarItem = item;
以上的代码执行的结果:只能修改图片的大小了。
2.Tabe Bar的高度修改不了。
总结:
鉴于UITabBarController提供开放的接口有限,有些地方欠缺完美处理,这个也是UITabBarController的不足之处,不过目前它能满足我们的大部分需求了。在使用的时候注意Custom Content和Tab bar 。很好的使用属性tabBar。