iOS View 编程指南

文章目录
  1. 1. View 和 Window 架构
    1. 1.1. View 结构基础
      1. 1.1.1. View 层级和子view 管理
      2. 1.1.2. View 绘制循环
      3. 1.1.3. 内容 Modes
      4. 1.1.4. 可拉伸 Views
      5. 1.1.5. 内建动画支持
    2. 1.2. View 几何和坐标系
      1. 1.2.1. The Relationship of the Frame, Bounds, and Center Properties
      2. 1.2.2. 坐标系转换
      3. 1.2.3. Points Versus Pixels
    3. 1.3. The Runtime Interaction Model for Views
    4. 1.4. Tips for Using Views Effectively
      1. 1.4.1. Views Do Not Always Have a Corresponding View Controller
      2. 1.4.2. Minimize Custom Drawing
      3. 1.4.3. Take Advantage of Content Modes
      4. 1.4.4. Declare Views as Opaque Whenever Possible
      5. 1.4.5. Adjust Your View’s Drawing Behavior When Scrolling
      6. 1.4.6. Do Not Customize Controls by Embedding Subviews

View 和 Window 架构

View 结构基础

layer 管理 view 辅助存储器,处理view 相关的动画。

View 层级和子view 管理

View 绘制循环

UIView类使用按需绘制模型来呈现内容。当视图首次出现在屏幕上时,系统要求它绘制其内容。系统捕获该内容的快照并将该快照用作 view 的视觉表示。如果不更改视图的内容,则可能永远不会再次调用视图的绘图代码。快照图像可用于涉及视图的大多数操作。如果更改了内容,则会通知系统视图已更改。然后,视图重复绘制视图和捕获新结果快照的过程。当视图的内容更改时,您不会直接重绘这些更改。而是使用setNeedsDisplay或setNeedsDisplayInRect:方法使视图无效。这些方法告诉系统视图的内容已更改,并且需要在下一个机会重新绘制。在启动任何绘图操作之前,系统将一直等到当前运行循环结束。这种延迟使你有机会一次使多个视图无效,从层次结构中添加或删除视图,隐藏视图,调整视图大小以及重新放置视图。所做的所有更改都将同时反映出来。

问题:都有什么方式可以出发视图重新绘制?

内容 Modes

可拉伸 Views

内建动画支持

View 几何和坐标系

The Relationship of the Frame, Bounds, and Center Properties

坐标系转换

CGContextGetCTM
Returns the current transformation matrix.

Points Versus Pixels

The Runtime Interaction Model for Views

Tips for Using Views Effectively

Views Do Not Always Have a Corresponding View Controller

Minimize Custom Drawing

Take Advantage of Content Modes

Declare Views as Opaque Whenever Possible

Adjust Your View’s Drawing Behavior When Scrolling

Do Not Customize Controls by Embedding Subviews