iOS 关于 UIKit 应该写在最前面的话
太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)
本文遵循“署名-非商业用途-保持一致”创作公用协议
如果你之前接触过 Web、Windows、Linux或其它相关的有界面的直接给用户使用的应用的话,你都会接触到一些用于绘制以及呈现信息的组件和系统提供的方法。
对于 Web 开发,Html 语言及 Dom 模型、JavaScript 语言及内置库、CSS 是构建 Web 页面的有效工具库和语言。至于各个浏览器是如何呈现和绘制的,这个我们并不需要关心。
而 Windows 系统也同样提供了 win32 SDK,或者 MFC 类库以及绘图用的 GDI+。
至于 Linux,常用作服务器,但当下的 Ubuntu、Federa 等比较流行的用于桌面和手机的操作系统(虽然还没火起来吧,至少 Ubuntu 是可以用于手持设备的)以 xWindow 作为图形绘制呈现的服务端来完成界面呈现工作。
由以上可以看得出,带界面的操作系统或界面呈现体系,均有一套开发库,供开发人员使用,以在程序中按其预定模式来调用,以构建出可以与用户进行交互的用户界面。
而且细研究会发现,有一个界面基类,该基类本身就是通过绘图类库来完成自身绘制的,而其它的界面组件都直接或间接从该基类派生出来,也使用绘图库相关的方法来在基类界面的基础上,继续完成子类组件各自的样式和功能。
另外,交互事件,也是界面组件特有的功能,是与绘图类库无关,但也有牵连的,界面上交互事件的分发,也会遵从一定规则,有的是从上层往下层,有的是从外层往内层,而有的就是从里向外,或者各种循环组合,事件往往可以被拦截,即给开发人员一个切入事件循环系统内部的机会,并能在处理完或处理的同时,将事件再放事件循环系统中去,这样就像在电路上用电表测量一样,并不影响原电路正常供电。
至于动画呈现的方式,也就无非是多个缓冲画好要显示的内容,然后一桢一桢地画上去,利用了视觉暂留,来满足人眼的视觉享受。
总之,学习一门新的界面库的时侯,需要追根溯源,才好提纲切领,即能掌握全局,又能深入细节。从绘图和界面根类出发,结合事件响应处理的机制原理,再深入到各个界面组件或自定义,就会胸有成竹而不乱阵脚了。
iOS 关于 UIKit 专栏应该写在最前面的话