UIView、NSView、Quartz2d及CALayer的坐标系

序言:我们在UI界面布局时,绘图渲染是必须要用到坐标系,只有根据坐标系才能完成布局。苹果软件开发坐标系统跟我们平时生活中的坐标系还是不一样的,下面总结和梳理一下。

  • UIView的坐标系是左手坐标系,即坐标原点在屏幕左上角,这也是我们iOS开发运用最多的。
  • NSView的坐标系是右手坐标系,即坐标原点在屏幕左下角。

    另外MAC开发中有一个方法:- (BOOL)isFlipped; 这个方法默认返回NO,及坐标原地在屏幕左下角。重写该方法并返回YES,后便变成了左手坐标系。

  • Quartz 2d是跨平台的二维绘图引擎,其参照的坐标是右手坐标系,及原点在屏幕左下角。

    我们在iOS开发中,需要通过以下方法进行坐标转换,才能准确绘制出图形。

     CGContextTranslateCTM(context, 0, height);//1. 坐标往下移动屏幕的高度
     CGContextScaleCTM(context, 1.0, -1.0);//2. 坐标以X轴翻转
    

    如今UIKit的高层方法已经为我们做了坐标变换的工作,比如UIImage的drawInRect的方法等。

  • CALayer的坐标系比较特殊,在iOS系统中是左手坐标系,坐标原点在左上角;在MAC OS中是右手坐标系,坐标原点在左下角。

你可能感兴趣的:(UIView、NSView、Quartz2d及CALayer的坐标系)