资讯专栏INFORMATION COLUMN

iOS开发②应用界面

liangzai_cool / 3061人阅读

摘要:界面应用界面主要是使用框架开发,它有一套自己的模式,其中视图和控制器是中的及其子类和及其子类。应用界面构建层次一般情况下,用于中只包含一个。

iOS界面应用界面主要是使用Cocoa Touch框架开发,它有一套自己的MVC模式,其中视图和控制器是UIKit中的UIVIew及其子类和UIVIewController及其子类。

视图控制器

Cocoa Touch中UIVIewController是所有控制器的基类,视图控制器有很多种,下面先介绍一个iOS中的控制器种类和生命周期。

视图控制器种类

与导航相关的视图控制器如下所示:

UIViewController: 用于自定义视图控制器的导航。例如对于两个界面的跳转,可以用一个UIViewController来控制另两个UIViewController。

UINavigationController:导航控制器,它与UITableViewController结合使用,能够构建树形结构导航模式

UITabBarController: 标签栏控制器,用于构建树形标签导航模式

UIPageViewController:呈现电子书导航风格控制器

UISplitViewController:可以把屏幕分割成几块的视图控制器,主要为iPad屏幕设计

UIPopoverController:呈现气泡风格视图的控制器,主要为iPad屏幕设计。

视图的生命周期

在应用运行过程中视图会显示不同的状态,这就是应用的生命周期。视图生命周期的不同阶段会回调视图控制器的不同的方法,视图控制器的生命周期如下图所示:

视图的生命周期主要有四种状态:

视图创建

视图创建不加载到内存中,会调用viewDidLoad方法,但是视图此时并不可见。该方法中通常会对所控制的视图进行初始化处理。viewDidLoad方法在应用运行的时候只调用一次。

视图可见

视图可见前后会调用viewWillAppear和viewDidAppear两个方法。

视图不可见

视图不可见前后会调用viewWillDisappear和viewDidDisappear两个方法。

系统低内存

在低内存情况下,iOS系统会调用didReceiveMemoryWarning方法,该方法的功能是释放内存,包括视图控制器中的一些成员变量和视图的释放。

视图

Cocoa Touch中UIViewC是所有视图的基类。

UIView继承层次结构

视图分类

苹果将UIKit框架中的视图分为以下几个类别:

控件

继承自UIController类,能够响应用户高级事件。

窗口

它是UIWindow对象,一个iOS应用只有一个UIWindow对象,它是所有子视图的父容器。

容器视图

它是UIScrollView、UIToolbar及它们的子类。UIScrollView的子类有UITextView、UITabView和UICollectionView,在内容超出屏幕时,它们可以提供水平或垂直滚动条。UIToolbar是非常特殊的容器,它能够包含其他控件,一般置于屏幕底部,特殊情况下也可以置于屏幕顶部。

显示视图

用于显示信息,包括UIImageView,UILabel、UIProgressView和UIActivityIndicatorView等

文本和Web视图

提供了能够显示多行文本的视图,包含UITextView和UIWebView,其中UITextView也属于容器视图,UIWebView是能够加载和显示HTML代码的视图。

导航视图

为用户提供从一个屏幕到另一个屏幕的导航视图,它包括UITabBar和UINavigationBar。

警告框和操作表

用于给用户提供一种反馈或者与用户进行交互。警告框是可以以动画方式弹出来的视图,而操作表是给用户可选择操作的视图,在iphone中它会从屏幕底部弹出,在iPad中则会出现在屏幕中央。

应用界面构建层次

一般情况下,iOS用于中只包含一个UIWindow。从UI构建层次来讲,UIWindow包含了一个根视图UIView。根视图一般也只有一个,置于UIWindow中。根视图类型决定了应用程序的类型。应用界面的构建层次是一种树形结构,如下图所示:

简要介绍图中三个属性的含义:

superview:获得父视图对象

subviews:获得子视图对象集合

window:获得视图所在的界面Window对象

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/16488.html

相关文章

  • 前端知识点总结——Angular

    摘要:前端知识点总结一概述基于命令行的开发方式编译工作集成了打包工具。。。。在浏览器中接管展现应用的内容,并根据我们提供的操作指令响应用户的交互。在开发时,八大组成部分模块组件模板自带的标签指令绑定相关的的语法元数据告诉如何处理一个类。 前端知识点总结——Angular 一、Angular概述 基于命令行的开发方式? ①hot reload ②编译工作 ③集成了webpack打包工具 。。。...

    BaronZhang 评论0 收藏0
  • 2019最新Android面试题

    摘要:若拦截事件返回为,表示拦截,事件不会向下层的或者传递,表示不拦截,继续分发事件。五注册反注册未成对使用引起的内存泄漏。七集合对象没有及时清理引起的内存泄漏。 原文链接:https://blog.csdn.net/wen_hah... 版权声明:本文为博主原创文章,转载请附上博文链接! 前言 金三银四到来了,找工作的好时候到了,小伙伴们是不是都在忙着找工作呢,小弟前一阵也是忙着在找工作,...

    plus2047 评论0 收藏0
  • 2021爱智先行者——EdgerOS Spirit 1深度使用体验与EdgerOS应用开发实践

    摘要:是下一代面向物联网和边缘计算的智能操作系统,可广泛应用于面向个人家庭和行业的物联网产品和解决方案,有效降低开发门槛缩短开发周期。 一、前言 ① 智能边缘计算操作系统...

    spacewander 评论0 收藏0
  • 2017年云巴产品更新合集

    摘要:更新修正协议下默认关闭时会取消订阅本次订阅的所有物联网整体方案篇年,云巴利用实时跨平台双向物联网云端系统的产品优势,积极迎接物联网新时代,为客户定制物联网整体解决方案。 SDK 篇 Android SDK 更新 ·Android Release 1.8.5在demo中去除掉小米、华为平台的jar包,让用户自行下载 ·Android SDK 1.8.6对新版华为推送做了适配。 JavaS...

    iamyoung001 评论0 收藏0
  • 2017年云巴产品更新合集

    摘要:更新修正协议下默认关闭时会取消订阅本次订阅的所有物联网整体方案篇年,云巴利用实时跨平台双向物联网云端系统的产品优势,积极迎接物联网新时代,为客户定制物联网整体解决方案。 SDK 篇 Android SDK 更新 ·Android Release 1.8.5在demo中去除掉小米、华为平台的jar包,让用户自行下载 ·Android SDK 1.8.6对新版华为推送做了适配。 JavaS...

    stormzhang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<