1,介紹一下概念
frame:與view中的frame概念相同欢摄,(x,y)subLayer左上角相對(duì)于supLayer坐標(biāo)系的位置關(guān)系熬丧;width, height表示subLayer的寬度和高度诡宗。
bounds:與view中的bounds概念相同理肺,(x,y)subLayer左上角相對(duì)于自身坐標(biāo)系的關(guān)系;width, height表示subLayer的寬度和高度鹰晨。
position:錨點(diǎn)在supLayer坐標(biāo)系中的位置绿淋;
anchorPoint:錨點(diǎn)在自身坐標(biāo)系中的相對(duì)位置闷畸,默認(rèn)值為(0.5,0.5)吞滞,左上角為(0佑菩,0),右下角為(1裁赠,1)殿漠,其他位置以此類(lèi)推;錨點(diǎn)都是對(duì)于自身來(lái)講的. 確定自身的錨點(diǎn),通常用于做相對(duì)的tranform變換.當(dāng)然也可以用來(lái)確定位置佩捞;
2绞幌,介紹一下關(guān)系
舉例:
1,frame的改變會(huì)影響位置position一忱,進(jìn)而影響bounds的寬高啊奄,不會(huì)影響錨點(diǎn)anchorPoint;
如:frame為(100掀潮,100菇夸,100,100)仪吧,bounds為(0庄新,0,100薯鼠,100)择诈,position為(150,150)出皇,錨點(diǎn)為(0.5羞芍,0.5);
此時(shí)frame變?yōu)椋?00郊艘,100荷科,200唯咬,200),bounds(0畏浆,0胆胰,200,200)刻获,position(200蜀涨,200),錨點(diǎn)為(0.5蝎毡,0.5)厚柳;
2,bounds改變不會(huì)影響supLayer在中位置沐兵,也不會(huì)影響錨點(diǎn)草娜,會(huì)影響frame;
如:frame為(100痒筒,100,100茬贵,100)簿透,bounds為(0,0解藻,100老充,100),position為(150螟左,150)啡浊,錨點(diǎn)為(0.5,0.5)胶背;
此時(shí)bounds變?yōu)椋?巷嚣,0,200钳吟,200)廷粒,position(150,150)红且,錨點(diǎn)為(0.5坝茎,0.5)不變,則frame為(50暇番,50嗤放,250,250)壁酬;
總之:(1)位置次酌,錨點(diǎn)恨课,frame都是相對(duì)于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不會(huì)影響位置,錨點(diǎn)贫母,只會(huì)影響frame文兑,由于寬高變了,導(dǎo)致frame寬高的變化腺劣,又由于位置position沒(méi)變绿贞,進(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