UITabBarController的使用心得

时间:2020-12-22 16:30:22

这段时间了解下UITabBarController,今天把我遇到的问题和心得记录下。

网上有很多UITabBarController的资料,对于一些UITabBarController的基础性知识,在这里我就不啰嗦了。可以看这里(http://www.cnblogs.com/smileEvday/archive/2012/05/20/UITabBarController.html)。今天我要说的是自己的一些不同于网上的的心得。

官方的一副图片还是要贴出来。

UITabBarController的使用心得

我也按网上的方式做了一个UITabBarController的Demo。如下图

UITabBarController的使用心得  

它的具体代码为:

- (void)viewDidLoad

{

    [superviewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

    

    _tabBar = [[UITabBarControllerallocinit];

    _tabBar.delegate =self;

    _redViewController = [[RedViewControllerallocinitWithNibName:nilbundle:nil];

    _blueViewController = [[BlueViewControllerallocinitWithNibName:nilbundle:nil];

    NSArray *viewControllerArray = [NSArrayarrayWithObjects:_redViewController,_blueViewController,nil];

    _tabBar.viewControllers = viewControllerArray;

    _tabBar.view.frame =CGRectMake(0,0self.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:@"102@2x.png"]selectedImage:[UIImageimageNamed:@"102-sel@2x.png"]];

self.tabBarItem = item;

以上的代码执行的结果: UITabBarController的使用心得

只能修改图片的大小了。

  2.Tabe Bar的高度修改不了。

   

总结:

   鉴于UITabBarController提供开放的接口有限,有些地方欠缺完美处理,这个也是UITabBarController的不足之处,不过目前它能满足我们的大部分需求了。在使用的时候注意Custom Content和Tab bar 。很好的使用属性tabBar。