UIView、NSView、Quartz2d及CALayer的坐標(biāo)系

序言:我們在UI界面布局時,繪圖渲染是必須要用到坐標(biāo)系,只有根據(jù)坐標(biāo)系才能完成布局。蘋果軟件開發(fā)坐標(biāo)系統(tǒng)跟我們平時生活中的坐標(biāo)系還是不一樣的,下面總結(jié)和梳理一下。

  • UIView的坐標(biāo)系是左手坐標(biāo)系,即坐標(biāo)原點在屏幕左上角,這也是我們iOS開發(fā)運用最多的。
  • NSView的坐標(biāo)系是右手坐標(biāo)系,即坐標(biāo)原點在屏幕左下角。

    另外MAC開發(fā)中有一個方法:- (BOOL)isFlipped; 這個方法默認返回NO,及坐標(biāo)原地在屏幕左下角。重寫該方法并返回YES,后便變成了左手坐標(biāo)系。

  • Quartz 2d是跨平臺的二維繪圖引擎,其參照的坐標(biāo)是右手坐標(biāo)系,及原點在屏幕左下角。

    我們在iOS開發(fā)中,需要通過以下方法進行坐標(biāo)轉(zhuǎn)換,才能準(zhǔn)確繪制出圖形。

     CGContextTranslateCTM(context, 0, height);//1. 坐標(biāo)往下移動屏幕的高度
     CGContextScaleCTM(context, 1.0, -1.0);//2. 坐標(biāo)以X軸翻轉(zhuǎn)
    

    如今UIKit的高層方法已經(jīng)為我們做了坐標(biāo)變換的工作,比如UIImage的drawInRect的方法等。

  • CALayer的坐標(biāo)系比較特殊,在iOS系統(tǒng)中是左手坐標(biāo)系,坐標(biāo)原點在左上角;在MAC OS中是右手坐標(biāo)系,坐標(biāo)原點在左下角。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容