zoukankan      html  css  js  c++  java
  • 2016.01.21 UITabBarController

      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 allocinitWithTitle:@"主页" 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 }

     

     

     

  • 相关阅读:
    数据结构之 栈的应用 括号匹配
    全排列算法与全组合算法
    数据结构高分笔记 第二章综合应用题
    数据结构之 队列的操作与实现
    [置顶] 数据结构之 队列的操作与实现
    php数据库操作类
    php分页类
    [置顶] 数据结构之 链栈的实现
    MySQL数据库应用 从入门到精通 学习笔记
    Linux服务器上使用curl命令发送报文
  • 原文地址:https://www.cnblogs.com/immustard/p/5149364.html
Copyright © 2011-2022 走看看