美文网首页
View Controller Programming Gui

View Controller Programming Gui

作者: 47号同学 | 来源:发表于2016-10-23 19:09 被阅读30次

    前言:最近开始想巩固一下 iOS 编程基础,所以决定先从 UI 部分开始,重新去认识。在想这么做的时候,我选择了阅读官方文档,其实官方文档是一种非常棒的学习材料(这句就是废话),但是碍于语言和心理等等原因,大部分人都选择阅读博客等,而忽略了官方文档。当你阅读了大牛的博客后,回过头来就会发现,其实蛮多内容都是出自官方文档,所以各位应该好好利用官方文档。

    The Role of View Controllers

    VC 所扮演的角色:它在我们的 APP 中不可缺省的一部分,其主要任务有如下:

    • 通常响应底层数据的更新,以至更新views的内容
    • 响应用户与试图的互动
    • 调整视图大小和管理整个界面的布局
    VC 的分类:
    • Content view controllers (内容控制器):管理应用中分散的内容(比如一个VC 中有各种各样的 views等),在 APP 中所创建的 VC 基本是这个类型。
    • Container view controllers(容器控制器):从其他视图中(正如所知道的子控制器),以至在导航控制器展示或是将这些控制器的内容不同方式展示。

    如果想详细了解两种控制器的区别,点这里区别

    VC 视图层级

    VC 最重要的任务就是管理视图的层级关系,每个 VC 都有一个根视图 (root view ),其形式如树状图,root view 是树根,是所有 views 的容器,也是 VC 的 view 属性。

    VCPG_structure-of-navigation-interface_5-1_2x.png
    VC 加载方式

    VC 是懒加载的方式,当一次使用到 view 这个属性的时候 VC 才被创建。下面就介绍几种 VC 的创建方式:

    • 通过 Storyboard的方式:

      首先要创建 UIStoryboard 对象,再调用 instantiateViewController(withIdentifier:) 办法。

    • 通过Nib file的方式:

      直接调用 VC 的 init(nibName:bundle:) 办法创建,其实该方式与方式一很像,只不过是把 storyboard 中的 NIib 文件拆散来加载罢了。

    • 通过 loadView() method:

      该方式就是我们常用的纯代码创建 UI,在该办法中,你可以建立你试图的层级关系,然后将 root view 赋值给 VC 的 属性 view。值得注意的时,该办法是由系统自己调用,千万不可以自己去调用该办法。在该办法中,要设置 root view ,要不 VC 的 view == nil ,会一直调用该办法,程序会 crash。

    处理视图相关的通知

    当视图可视性发生变化的时候,VC 会自动调用相应的办法去处理和响应视图的变化。如下图展示了views 的状态形式和之间的转化:

    VCPG_structure-of-navigation-interface_5-1_2x.png

    由上图可知:不是每个 “will” 状态仅仅只对应一个 “did” 状态,还要注意 Appearing & Disappearing 两者之间的状态转换。还有,你在 “will” 中开启的任务,同样值得注意的是,不仅仅在 “did” 中结束,还应在相反状态的 “will” 中结束。

    root VC

    正如 VC 一样,VC 管理着其视图的关系,那么相对应地也会有一种 VC 管理着整个 APP 的 VC 层级关系,那就是 root VC。

    VCPG-container-and-presented-view-controller_2-4_2x.png

    如上图所示,root VC 其实就是前面所说的 Container view controller。

    尾巴:本文是记录自己的一些学习笔记,便于日后翻阅。如果文中有不正之处,请联系并指出,谢谢。

    相关文章

      网友评论

          本文标题: View Controller Programming Gui

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