• 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 }

     

     

     

  • 相关阅读:
    [LeetCode]230. 二叉搜索树中第K小的元素(BST)(中序遍历)、530. 二叉搜索树的最小绝对差(BST)(中序遍历)
    【二叉树-所有路经系列(根->叶子)】二叉树的所有路径、路径总和 II、路径总和、求根到叶子节点数字之和(DFS)
    [LeetCode]1083. 销售分析 II(Mysql,having+if)
    [LeetCode]196. 删除重复的电子邮箱(delete)
    [LeetCode]面试题62. 圆圈中最后剩下的数字(数学)
    [算法]十进制整数转八进制
    [LeetCode]534. 游戏玩法分析 III(Mysql)
    [LeetCode]Mysql小本本
    [LeetCode]Mysql系列5
    Java 冒泡排序的实现
  • 原文地址:https://www.cnblogs.com/immustard/p/5149364.html
Copyright © 2020-2023  润新知