翻译_iOS视图编程指南(View Programming Guide for iOS)之视图和窗口体系

官方最新:View Programming Guide for iOS

图片源自网络

前言##

前些日子,我发布一个苹果官方文档的翻译,之后就有不少同学朋友问我:翻译苹果官方文档能做什么,开发过程用到的时候很少,浪费时间,还又没什么用。今天,刚好有时间,就在此申明一下翻译苹果官方文档的实质作用:

  • 首先,翻译官方文档可以提高自身英语阅读能力和理解能力,增大自己的词汇量,良好的英语基础会让工作效率更上一层楼的;
  • 其次,对于iOS开发而言,官方文档可以让你更好地理解每一个技术点实现的基本原理,知其然更要知其所以然,这样对iOS开发的进阶者和初学者都有很大的帮助;
  • 最后,翻译官方文档可以让你更加全神贯注,写代码的过中会出现分神、思维混沌等现象,这时候翻译点英文资料可以让你静下心来,我已试过,很有帮助;

还有一点,苹果官方文档实属繁多,全部按部就班的翻译会耗时很长。为提高此翻译文章实质作用,特恳请大家能给一些指引,大家可以把日常工作用到的章节私信评论给我,我用业余时间把这些急需的章节翻译出来,贡献给大家,当然,翻译的文章难免有不足的地方,还望各位好友指出,以提高文章质量。

视图和窗口体系结构##

  • 视图和窗口呈现应用的交互界面并且处理交互事件。UIKit和其他系统框架提供大量可以使用而很少改动或无需改动的视图。你也可以在与标准视图呈现内容不同的地方设置自定义视图。

  • 无论你是使用系统视图还是自定义视图,都需要理解由UIVIewUIWindow类所提供的基础结构。这些类提供复杂的设施来管理视图的布局和显示。理解这些设施是如何工作的对于确保在应用发生变化时视图可以正常工作是非常重要的。

视图结构的基本原理####

  • 表面上,你可能想去做的就是处理视图对象(UIView的子类).一个视图对象规定了视图上矩形区域,并且在矩形区域上处理绘画和触摸事件。视图也可以是其他一些视图的父类,协调那些视图的位置和尺寸。UIView的大部分工作用于管理视图之间的关系,但也可根据自己的需要自定义视图默认的行为。
  • 视图与核心动画层合力处理视图内容修改和动画显示。在UIKit的每个视图都是由一个图层对象(通常都是 CALayer的子类)支持,这些图层管理视图的存储回存以及处理视图相关的动画。大部分的操作都得通过UIView的接口。然而,在那些你需要的控制远多于视图渲染和动画行为的情形下,你需要通过图层来执行相应的操作。
  • 为理解视图和图层的关系,下面的例子会对你有所帮助。图1-1展示了从视图切换例子应用到底层核心动画层的关系。应用中的视图包括窗口(本身也是视图),一个作为视图容器的UIView对象,一个图片视图,一个展示控制的工具条,一个条按钮项(它本身不是视图,但他管理内部的视图)。每个视图都有一个响应图层,并且可以通过视图的 layer属性访问到其中,由于条按钮项不是视图,故不能直接访问它的 layer属性。在这些图层对象的后面是核心动画渲染对象和用于管理屏幕具体像素的硬件缓冲区。
    图1-1例子应用视图的体系结构
    图1-1例子应用视图的体系结构
  • 使用核心动画图层对象对于性能提升有重要的意义。尽可能少的调用视图对象的绘制代码,一旦代码被调用,就会被核心动画缓存下来,以便以后尽可能的复用。复用已渲染好的内容可以消除更新视图所带来的高消耗的绘制周期。在动画过程中,复用已存在的内容是相当重要的。这种复用机制与创建新的内容相比,消耗的成本更低。

视图层次和子视图的管理####

  • 一个视图在呈现自身内容之外,还可以作为其他视图的容器。当一个视图包含另一个视图时,两个视图间的父子关系就创建出来了。在关系中,孩子视图就是子视图,父亲视图就是超视图。这种关系的创建对于应用的虚拟外表和行为具有重要的意义。
  • 表面上,子视图掩盖全部或部分父视图的内容。如果子视图是完全不透明的,有子视图组成的区域将会完全掩盖父视图相应地区域。如果子视图部分透明,在屏幕显示之前,父视图和子视图的内容就会混合在一起。每一个父视图都将子视图存储在一个有序的数组中,这个顺序影响着每个子视图可视度。如果两个兄弟视图相互重叠,最后加入的视图将会最先显示。
  • 父子视图的关系也影响着一些视图行为。改变父视图大小会产生波浪作用,导致子视图的位置和尺寸也随之变化。当父视图的尺寸发生变化时,使用视图的调整功能以恰当的配置视图。另一些影响子视图的变化有:隐藏父视图、改变父视图的透明度、将数学变化应用到父视图的坐标系统中。
  • 在视图层次中管理视图决定着你的应用是如何响应事件的。当在特定视图中发生触摸事件时,系统将会把带有触摸信息的事件对象直接发送到视图的处理机制中。然而,如果视图没有处理特定的触摸事件时,它将会把事件对象传送到父视图。如果父视图没有处理事件,将会把事件对象传递到父视图的父视图,以此类推,直到响应链。特定的视图也会将事件对象传递到介于中间的响应对象,例如视图控制器。如果没有对象处理该事件,最终达到抛弃它的应用对象。(写于16.4.1)

视图绘制周期####

  • 视图类使用一种按需绘画模式呈现内容。当视图第一次出现在屏幕上,系统将会请求绘制其内容。系统捕获内容的快照,并将此快照作为视图的虚拟显示。如果你从不想改变视图内容,那么视图的绘制代码可能从不会再次调用。快照被复用在包括视图在内的大部分操作。如果你改变了这个内容,你通知系统视图已发生改变。视图将会重复绘制视图和捕获快照的过程。
  • 当你视图的内容改变时,你没有直接重新绘制这些改变。相反,你可以使用setNeedsDisplay或者setNeedsDisplayInRect:方法使你的视图失效。这些方法会告诉系统这些已改变内容的视图需要在下次机会重新绘制。系统直到当前运行循环结束才进行任何绘制操作。

写在最后

这篇文章翻译很长时间,中间总是断断续续的,今天终于完成了,心里石头也算是放下了。
通过翻译文章,一方面让自己重新学习了一下以前的知识,一方面,也锻炼了自己的英语翻译的能力。虽然翻译水平很low吧,但我还是会坚持下去的,加油!

非常感谢您的阅读,最近开通了微信公众号,为您呈现更加精彩的技术文章,个人公众号ID:iOSDevSkills,期待您的加入!

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

推荐阅读更多精彩内容