iOS中,CALayer的frame,bounds,position,anchorPoint關(guān)系詳解

1,介紹一下概念

frame:與view中的frame概念相同,(x,y)subLayer左上角相對于supLayer坐標(biāo)系的位置關(guān)系;width, height表示subLayer的寬度和高度。

bounds:與view中的bounds概念相同,(x,y)subLayer左上角相對于自身坐標(biāo)系的關(guān)系;width, height表示subLayer的寬度和高度。

position:錨點(diǎn)在supLayer坐標(biāo)系中的位置;

anchorPoint:錨點(diǎn)在自身坐標(biāo)系中的相對位置,默認(rèn)值為(0.5,0.5),左上角為(0,0),右下角為(1,1),其他位置以此類推;錨點(diǎn)都是對于自身來講的. 確定自身的錨點(diǎn),通常用于做相對的tranform變換.當(dāng)然也可以用來確定位置;

2,介紹一下關(guān)系

舉例:

1,frame的改變會影響位置position,進(jìn)而影響bounds的寬高,不會影響錨點(diǎn)anchorPoint;

如:frame為(100,100,100,100),bounds為(0,0,100,100),position為(150,150),錨點(diǎn)為(0.5,0.5);

此時frame變?yōu)椋?00,100,200,200),bounds(0,0,200,200),position(200,200),錨點(diǎn)為(0.5,0.5);

2,bounds改變不會影響supLayer在中位置,也不會影響錨點(diǎn),會影響frame;

如:frame為(100,100,100,100),bounds為(0,0,100,100),position為(150,150),錨點(diǎn)為(0.5,0.5);

此時bounds變?yōu)椋?,0,200,200),position(150,150),錨點(diǎn)為(0.5,0.5)不變,則frame為(50,50,250,250);

總之:(1)位置,錨點(diǎn),frame都是相對于supLayer,三者互相影響;(錨點(diǎn)改變, position不影響, frame變化;frame變化, 錨點(diǎn)不影響, position變化;position變化, 錨點(diǎn)不影響, frame變化)

? ? ? ? ? ? ? position.x = frame.origin.x + anchorPoint.x * frame.size.width;

? ? ? ? ? ? ? position.y = frame.origin.y + anchorPoint.y * frame.size.height;

(2)bounds不會影響位置,錨點(diǎn),只會影響frame,由于寬高變了,導(dǎo)致frame寬高的變化,又由于位置position沒變,進(jìn)而影響左上角左邊位置;(bounds變化,錨點(diǎn)位置不影響,frame變化)

frame.size.width = bounds.size.width

frame.size.height = bounds.size.height

frame.origin.x = anchorPoint.x * frame.size.width - position.x;

frame.origin.y = anchorPoint.y * frame.size.height - position.y;

參考

http://www.cnblogs.com/AbeDay/p/5026870.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 在iOS中隨處都可以看到絢麗的動畫效果,實(shí)現(xiàn)這些動畫的過程并不復(fù)雜,今天將帶大家一窺ios動畫全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,698評論 6 30
  • 引言 相信初接觸到CALayer的人都會遇到以下幾個問題: 為什么修改anchorPoint會移動layer的位置...
    大頭青年閱讀 924評論 1 8
  • OCT 13TH, 2013 引言 相信初接觸到CALayer的人都會遇到以下幾個問題: 為什么修改anchorP...
    subite0閱讀 939評論 0 1
  • 轉(zhuǎn)載:http://m.itdecent.cn/p/32fcadd12108 每個UIView有一個伙伴稱為l...
    F麥子閱讀 6,595評論 0 13
  • 引言 相信初接觸到CALayer的人都會遇到以下幾個問題: 為什么修改anchorPoint會移動layer的位置...
    需要藥閱讀 562評論 0 0

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