iOS界面开发:自定义视图、自动布局、尺寸类及交互特性解析
1. 自定义视图
在非游戏或非动画为中心的应用中,从头开始编写自定义视图并不常见。更常用的方法是使用界面构建器和自定义nib文件创建复合视图。不过,当创建更复杂的用户界面或在表格视图中使用这些复合视图时,性能会下降。Twitter团队早期就发现了这个问题,于是从复合视图转向直接绘制视图,从而减少了渲染视图所需的整体合成操作。
1.1 示例:推文单元格
一个简单的推文单元格实现可能会包含用于显示用户名的UILabel、用于显示推文文本的UILabel、用于显示头像的UIImageView等。但每个视图都会给Core Animation带来额外的合成负担。相比之下,直接绘制的推文单元格只包含一个没有子视图的单一视图,通过一个drawRect:方法绘制所有内容。
1.2 邮件应用示例
假设我们有一个邮件应用,需要在收件箱中显示邮件摘要,包含以下详细信息:
1. 发件人姓名/电子邮件地址
2. 发送日期或时间
3. 主题
4. 邮件正文片段 - 开头的几个字符
5. 邮件是否为新邮件、已读或已回复的指示器
6. 用于选择多封邮件的选择器(可能只是一个复选框)
7. 邮件是否有附件的指示器
我们将以复合视图和自定义视图两种风格创建这个视图,并测量两种视图的性能,包括创建一个单元格所需的时间和渲染所需的时间,同时分析每种风格的优缺点。
1.3 创建复合视图
创建复合视图的步骤如下:
1. 打开菜单“File” -> “New” ->