美文网首页
UITabBarController的简单介绍

UITabBarController的简单介绍

作者: Mustard_Buli | 来源:发表于2016-03-16 14:14 被阅读107次

    UITabBarController是IOS中很常用的一个viewController。UITabBarController通常作为整个程序的rootViewController,而且不能添加到别的container viewController中。可以轻松地管理多个控制器,轻松完成控制器之间的切换,典型的例子就是QQ、微信、微博等应⽤。
    .创建
      在storyboard中的模拟我们就不多说了,直接进入直接代码的编写。(模拟微博的tabBarController进行编写)
      我们选择在ApplicationDelegate中的 applicationDidFinishLaunching:方法中进行创建,因为前面已经说到了UITabBarController作为整个程序的rootViewController,并且要在显示程序的windows之前创建好。具体的创建步骤:
        (1)初始化UITabBarController
        (2)设置UIWindow的rootViewController为UITabBarController
        (3)创建相应的子控制器(viewcontroller)
        (4)把子控制器添加到UITabBarController
          eg:

    //创建TabBarControllor
            CustomTabBarController *tabBarController = [[CustomTabBarController alloc] init];
            tabBarController.tabBar.tintColor = [UIColor orangeColor];
            //设置窗口的根视图控制器
            self.window.rootViewController = tabBarController;
            //创建tabBar上管理的每个界面
            //1.创建主页
            HomeViewController *homeVC = [[HomeViewController alloc] init];
            homeVC.view.backgroundColor = [UIColor whiteColor];
            。。。。。。
            //将创建的homeVC添加到tabBarController上
            tabBarController.viewControllers = @[homeVC, msgVC, discoverVC, profileVC];    //viewControllers实际上就是一个数组,只需要把想传进去的viewController放进这个数组就可以了
    

    注意:展示的顺序和添加的顺序一致,和导航控制器中不同,展现在眼前的是第一个添加的控制器对应的View。
          实际效果:

            
    .UITabBar
      下方的工具条称为UITabBar ,如果UITabBarController有N个子控制器,那么UITabBar内部就会有N 个UITabBarButton作为子控件与之对应。
             (P.S.系统中没有放出UITabBarButton这个类,但是我们可以用『NSClassFromString(@"UITabBarButton"』)
      这里值得一提的是:UITabBarButton在UITabBar中得位置是均分的,UITabBar的默认高度为49,并且没有办法更改。
    .UITabBarItem****
      UITabBar上面显示的每一个Tab都对应着一个ViewController,我们可以通过设置viewcontroller.tabBarItem属性来改变tabbar上对应的tab显示内容。否则系统将会根据viewController的title自动创建一个,该tabBarItem只显示文字,没有图像。
        eg:
    homeVC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"主页" image:[UIImage imageNamed:@"tabbar_home"] selectedImage:[[UIImage imageNamed:@"tabbar_home_selected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
    

    .在UITabBar中间添加一个btn
      
    这个方法会在以下的情况下自动调用,如果想要手动调用的话应该调用『layoutIfNeeded』:
      .一个视图A被添加到另外一个视图B
       .一个视图的frame改变

    1 - (void)layoutSubviews{ 
    2    [super layoutSubviews]; 
    3  
    4    CGFloat avgWidth = self.frame.size.width / 5; 
    5  
    6     NSInteger index = 0; 
    7     for (UIView *item in self.subviews) { 
    8         if ([item isKindOfClass:NSClassFromString(@"UITabBarButton")]) { 
    9              item.frame = CGRectMake(index * avgWidth, item.frame.origin.y, avgWidth, item.frame.size.height);
    10 
    11             index++;
    12                 if (index == 2) {
    13                     _addBtn.frame = CGRectMake(index * avgWidth, 3, avgWidth, 44);
    14                     [self addSubview:_addBtn];
    15                    index++;
    16                 }
    17             }
    18         }
    19   }
    

    相关文章

      网友评论

          本文标题:UITabBarController的简单介绍

          本文链接:https://www.haomeiwen.com/subject/jbbqlttx.html