您的位置:首页 > 产品设计 > UI/UE

iOS中多控制器管理 UITabBarController

2015-07-30 15:03 711 查看


UITabBarController
UITabBarController的简单使用
UITabBarController的子控制器
UITabBar
App主流UI框架结构
Modal
自定义UITabBarController和TabBar
导航栏主题
常用主题设置:
导航栏按钮主题
自定义导航栏控制器
琐碎知识点
状态栏的设置


UITabBarController

    跟UINavigationController类似,UITabBarController也可以轻松管理多个控制器,轻松完成控制器之间的切换.

UITabBarController的简单使用

    UITabBarController的使用步骤:

    1> 初始化UITabBarController;

    2> 设置UIWindow的rootViewController为UITabBarController;

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


UITabBarController的子控制器

    添加单个子控制器

?
    设置子控制器数组

?

UITabBar

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

UITabBarButton

    UITabBarButton里面显示什么内容,由对应子控制器的tabBarItem属性实现.

    UITabBarItem有以下属性影响着UITabBarButton的内容

?

App主流UI框架结构

                



Modal

    除了push之外,还有另外一种控制器的切换方式,那就是Modal. 任何控制器都能够通过Modal的形式展示出来.

Modal的默认效果: 新控制器从屏幕的最底部往上钻, 直到盖住之前的控制器为止.

    以Modal的形式展示控制器

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

?

自定义UITabBarController和TabBar

如何自定义TabBar

    1> 首先自定义UITabBarController : 新建一个类, 继承自UITabBarController ;

    2> 新建一个类, 继承自UIView, 用来做TabBar, 封装内部的按钮 ;

    3> 在自定义的UITabBarController 中创建自定义的TabBar ,添加到默认的UITabBar上面 .

导航栏主题

    为了保证整个项目的导航栏样式一样, 可统一设置导航栏的主题 ;

    取得导航栏的appearance对象, 操作它就能设置导航栏的主题 ;

?


常用主题设置:

    1> 导航栏背景

?
    2> 标题

?
    3> iOS7返回按钮的箭头样式

?


导航栏按钮主题

    导航栏的左上角和右上角都是UIBarButtonItem对象, 为了统一样式, 也可以设置UIBarButtonItem的主题.

?
设置主题的方法:

    1> 背景

?
    2> 文字

?
    3> 导航栏返回按钮背景

?

自定义导航栏控制器

    自定义导航栏控制器的步骤: 新建一个类, 继承自UINavigationController .

    自定义导航栏的价值 :

    1> 重写push方法就可以拦截所有压入栈中的子控制器, 统一做一些处理 .

?
    2> 重写pop方法就可以拦截所有子控制器的出栈 .

?

琐碎知识点

    为了在push控制器时隐藏UITabBar, 需要做以下设置:

?
    initailize , load方法的区别:

    1> initailize ,load 都是类方法 ;

    2> 当一个类被装载进内存时, 就会调用一次 load 方法(当时这个类还不可用) ;

    3> 当第一次使用这个类时, 就会调用一次 initailize 方法.

状态栏的设置

    程序启动时隐藏状态栏, Hide during application launch

    程序启动完毕后再显示回状态栏(前提是状态栏交给了UIApplication管理) ;

    application.statusBarHidden = NO ;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息