翻译:iOS视图控制器编程指南(三)——设计技巧(Design Tips)

视图控制器是iOS中运行应用的一个重要工具,使用UIKit可以很容易创建复杂的接口而不用编写大量的代码。当实现你自己的视图控制器,使用下面的建议和指南来确保你不会做干扰系统期望的行为。

尽量使用系统提供的视图控制器

许多iOS框架定义可以在应用中使用的视图控制器。使用这些系统提供的视图控制器可以为你节省时间,确保一致的用户体验。

大多数系统视图控制器为特定任务而设计的。一些视图控制器可以访问用户数据例如联系人。其他视图控制器可以访问硬件或提供特殊界面来管理媒体。例如,UIKit中的UIImagePickerController类显示一个标准接口,用于捕获图片和适配并访问用户的相机。

在你创建自定义视图控制器之前,查看现有框架看看是否存在一个视图控制器可以完成你想要执行的任务。

·UIKit框架提供了视图控制器来显示警告、拍照和拍适配,管理iCloud中的文件。UIKit也定义了许多标准容日视图控制器,你可以使用它们在组织你的内容。

·GameKit框架提供视图控制器用于管理玩家、排行榜、成就和其他游戏功能。

·地址簿UI框架提供视图控制器用于显示和选择联系信息。

·MediaPlayer框架提供视图控制器用于显示和管理视频及从用户库中选择媒体资源。

·EventKit UI框架提供视图控制器用于显示和编辑用户的日历数据。

·GLKit框架提供视图控制器用于管理OpenGL渲染界面。

·Multipeer连接框架提供视图控制器用于检测其他用户并邀请他们连接。

·Message UI框架提供视图控制器用于组成电子邮件和短信。

·PassKit框架提供视图控制器用于显示pass及添加pass到Passbook。

·Social框架提供视图控制器用于为Twitter、Facebook和其他社交媒体网站构成消息。

·AVFoundation框架提供视图控制器用于显示媒体资源。

重要:不要修改系统提供的视图控制器的视图层级。每个视图控制器有自己的视图层级并自己负责维护层次结构的完整性。更改视图层级结构可能引入bug到你的代码并阻止视图控制器的正确操作。在系统视图控制器的情况下,要依靠公开的方法和属性修改视图控制器。

更多关于使用特殊视图控制器的信息,参见相应的框架文档。

让每个视图控制器相互独立

视图控制器应该是独立的对象。视图控制器不需要了解另一个视图控制器的内部运作或视图层级结构。在这种情况下,两个视图控制器需要通信或来回传递数据,使用显式定义的公共接口来完成通信或传递数据。

delegation设计模式通常用于管理视图控制器之间的通信。有了代理,一个对象定义一个protocol用于与相关代理对象通信,该代理对象符合该协议。委托对象的确切类型不重要。重要的是它实现了协议的方法。

使用根视图仅作为其他视图的容器

使用视图控制器的根视图仅仅作为内容的容器。使用根视图作为一个容器让所有的视图都有一个公共的父视图,这样使布局操作更简单。许多自动布局约束要求一个公共的父视图来保证视图布局的正确性。

知道你的数据在哪里

在MVC设计模式中,一个视图控制器的作用是促进模型对象和视图对象之间的数据移动。视图控制器可能存储一些临时变量数据并执行验证,但它的主要责任是确保其视图包含准确的信息。数据对象是负责管理实际数据并确保数据整体完整性。

UIDocumentUIDocument类之间关系分离数据和界面的例子。具体来说,两者之间没有默认关系。UIDocument对象协调数据的加载和保存,而UIViewController对象协调视图在屏幕上显示。如果你创建两个对象间的关系,请记住,为了效率,视图控制器应该只缓存来自文档的数据。实际的数据仍然属于文档对象。

自适应变更

应用可以在各种各样的iOS设备上运行,视图控制器的设计师为了适应不同大小设备的屏幕。而不是使用单独的视图控制器来管理不同的屏幕,使用内置的自适应支持响应视图控制器的大小和size类的变更。UIKit发送的通知让你可以大规模或小规模的更改你的用户界面,而无需改变视图控制器的其余代码。

关于处理自适应变化的更多信息,参见自适应模型(The Adaptive Model

官方原文地址:

https://developer.apple.com/library/prerelease/ios/featuredarticles/ViewControllerPGforiPhoneOS/DesignTips.html#//apple_ref/doc/uid/TP40007457-CH5-SW1

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,898评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,401评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,058评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,539评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,382评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,319评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,706评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,370评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,664评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,715评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,476评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,326评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,730评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,003评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,275评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,683评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,877评论 2 335

推荐阅读更多精彩内容