1. 创建主框架
    1. 创建一个iews-based Application模板项目
    2. 创建一个UIView试图子类。
    3. 双击MainWindow.xib打开IB
      1. 在IB中添加一个View对象
      2. 将该View对象所属类设置为之前创建的UIView子类
      3. 双击Asteroids View Controller项
      4. 将来Asteroids View Controller 与 刚创建者的View对象相关联
    4. 隐藏最上面的状态栏
      1. 打开“xx-Info.plist”文件
      2. 在属性列表编辑器中,单击最后一项,在行尾添加一个新行。
      3. 从给定的列表中选择“Status bar is initially hidden”项
      4. 选择“YES(隐藏)/NO(不隐藏)”
  2. 创建 一个图形
    1. 打开UIView试图子类
    2. Quartz 2D 绘图简单算法
      1. 保存上下文状态
      2. 执行单个或组合的矩阵变换
      3. 绘制需要这个变换的图形
      4. 还原上下文状态
    3. 编辑-(void)drawRect:(CGRect) rect;方法
      1. CGContextRef context = UIGraphicsGetCurrentContext(); 获取图形上下文,
      2. CGContextSaveGState(context); 保存其状态
      3. 重置变换
        1. CGAffineTransform to = CGContextGetCTM(context); 返回图形上下文的变换矩阵
        2. to = CGAffineTransformInvert(to); 创建一个 逆矩阵
        3. CGContextConcatCTM(context,t0); 将现有矩阵和新矩阵的to拼接起来
      4. 绘制一个矩形
        1. CGContextBeginPath(context); 通过上下文创建一个绘制路径,一次只能创建一条路径
        2. CGContextSetRGBFillColor(context,0,1,0,1); 设置路径中使用的颜色。后四位分别是RGBA的值(范围在 1~0之间)
        3. CGContextAddRect(context,CGRectMake(0,0,100,200); 在当前路径中添加一个矩形。
        4. CGCcontextClosePath(context); 结束当前路径。
        5. CGContextDrawPath(context,kCGPathFill); 将路径添加画布中,参数二为绘画模式。
      5. CGContextRestoreGState(context); 还原状态
  3. 矩形变换的一些操作
    1. CGAffineTransform t = CGAffineTransformIdentity; 保存一个单位矩阵的一个副本。
    2. t = CGAffineTransformTranslate(t,x,y); 创建一个新的矩阵,并将画布平移x、y个单位。
    3. t = CGAffineTransformRotate(t,rotation); 将画布旋转rotation个角度。
    4. t = CGAffineTransformScale(t,scale,scale); 将画布缩放scale个单位
  4. 那一面朝上
    1. 切换到水平方向
      1. 在主应用程序XXXAppsDelegate类applicationDidFinishLaunching方法中(3.2.2——4.0见备注)
      2. [application setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:NO]; 通过调用此方法将显示模式设置为横屏模式。
      3. [application setStatusBarHidden:YES animated:NO]; 记得依然将状态栏设置为隐藏,避免状态栏出现
      4. 将画面保持相对位置不变
        1. 只需要将旋转角度减少90°,以抵消横屏模式旋转的90°
        2. 交换了y值和 x值,x方向的位置变为480减去x,这样所有的对象都可以朝上了。
    2. 将原点居中
      1. 只需要将移动x点到中心点个距离,y点到中心点个距离就足够了。
      2. 感应设备的方向可以使用以下方法: UIDeviceOrientation orient = [[UIDevice currentDevice] orientation]; orient可以取如下值中的一个: UIDeviceOrientationUnknown:未知,假设没有旋转 UIDeviceOrientationPortrait:没有旋转 UIDeviceOrientationPortraitUpsideDown:180°旋转 UIDeviceOrientationLandscapeLeft:90°旋转 UIDeviceOrientationLandscapeRight:-90 °旋转 UIDeviceOrientationFaceUp:未知旋转 UIDeviceOrientationFaceDown:未知旋转
  5. 矢量图
    1. [self outlinePath:context]; 创建轮廓路径的另一份副本。
    2. CGContextClip(context); 将当前的路径转化为一个剪切区域。
    3. [self gradientFill:context]; 绘制一大片点缀的渐变色,
  6. 翻页动画
    1. 包含一幅动画的多帧画面的单幅图像称为sprite画册(atalas)。
    2. CGImageRef是一个指向Quartz 2D中的一个内部结构的指针,这个结构包含了这幅图像所有和显示相关的信息。
    3. 自由主题