• iOS开发之UITabBarController


    1、概述

    跟UINavigationController类似,UITabBarController也可以轻松地管理多个控制器,轻松完成控制器之间的切换,典型例子就是QQ、微信等应用。

    2UITabBarController的简单使用

    UITabBarController的使用步骤:

    (1)初始化UITabBarController

    (2)设置UIWindow的rootViewController为UITabBarController

    (3)根据具体情况,通过addChildViewController方法添加对应个数的子控制器

    3UITabBarController的子控制器

    UITabBarController添加控制器的方式有2种:

    (1)添加单个子控制器

    - (void)addChildViewController:(UIViewController *)childController;

    (2)设置子控制器数组

    @property(nonatomic,copy) NSArray *viewControllers;

    (3)根据索引选择子控制器

    self.selectedIndex = 0;//选中第0个子控制器

    4UITabBar

    如果UITabBarController有N个子控制器,那么UITabBar内部就会有N个UITabBarButton作为子控件。

    例如:如果UITabBarController有4个子控制器,那么UITabBar的结构大致如下图所示:

    5UITabBarButton

    UITabBarButton里面显示什么内容,由对应子控制器的tabBarItem属性决定:

    例如:

    UIViewController *vc1 = [[UIViewController alloc] init];

    vc1.tabBarItem.title = @"联系人";

    vc1.tabBarItem.image = [UIImage imageNamed:@"tab_buddy_nor"];

    点击相关tabBarItem后,系统会自动把按钮变为上图所示蓝色,并不需要提供蓝色的按钮图片了。也可以通过调用selectedImage方法设置点击后显示的图片。

    例如:

    childVc.tabBarItem.selectedImage =

    [[UIImage imageNamed:selectedImageName]

    imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

    IOS7必须设置渲染模式为不渲染,否则选择后还会变成蓝色。IOS6不用设置。但IOS6没有此方法,所以用此方法前要根据系统版本进行分情况。例如:

    #define iOS7 ([[UIDevice currentDevice].systemVersion doubleValue] >= 7.0)

    if (iOS7) {

            childVc.tabBarItem.selectedImage = [selectedImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

        } else {

            childVc.tabBarItem.selectedImage = selectedImage;

        }

    也可以在storyboard中直接拖一个UITabBarControllerView过去,然后右键选择view controllers拖线到子控制器添加子控制器,如下图:

    6App主流UI框架结构

    7、         Modal

    除了push之外,还有另外一种控制器的切换方式,那就是Modal。任何控制器都能通过Modal的形式展示出来。Modal的默认效果:新控制器从屏幕的最底部往上钻,直到盖住之前的控制器为止。

    Modal的形式展示控制器:

    -(void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion

    例如:

    MJTwoViewController *two = [[MJTwoViewController alloc] init];

    [self presentViewController:two animated:YES completion:^{

       NSLog(@"展示MJTwoViewController完毕.......");//展示完毕会调用

    }];

    关闭当初Modal出来的控制器:

    - (void)dismissViewControllerAnimated: (BOOL)flag completion: (void (^)(void))completion;

    例如:

    [self dismissViewControllerAnimated:YES completion:^{

           NSLog(@"关闭MJTwoViewController....");//关闭后会执行

    }];

  • 相关阅读:
    RPA 产品落地的最后一公里
    H5 native.js 控制wifi
    js 添加css或者链接文件
    js 获取网址中的参数
    js自建readAsBinaryString方法
    js 获取选中文字
    js 身份证校验代码
    js复制对象
    js 字符串编码与解码
    js数组排序
  • 原文地址:https://www.cnblogs.com/lifengfneg/p/4773895.html
Copyright © 2020-2023  润新知