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中是右手坐标系,坐标原点在左下角。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容