iOS 中的frame,bounds,center,transform關聯

這裏有一篇好文章 http://www.winddisk.com/2012/06/07/transform/spa

先看幾個知識點,UIView 的frame,bounds,center,transform屬性,CAlayer的position,anchorPoint,transform.orm

1.當一個view的frame被更改時圖片

a.當更改size時,它的bounds的width和height會被更改成與frame的size一致,可是bounds的origin不會被更改。view的center,layer的position可能會被更改。it

b.當更改origin時,對bounds屬性無影響。view的center,layer的position可能會被更改。io

 

2.當一個view的bounds被更改時form

a.當更改size時,frame的width和size會改成同bounds的size一致,frame的origin有可能更改(取決於layer的anchorPoint)。view的center,layer的position可能會被更改不會更改。transform

b。當更改origin時,frame無影響,view的center,layer的position不會更改。總結

 

3.當view的center更改時樣式

frame的origin會更改,layer的position會更改。di

 

4.當一個view的transform被更改了,即不爲CGAffineTransformIdentity。

frame屬性可能會更改,view的bounds,center不會變,layer的position不會變。這個很重要,這樣保持了在transform後,view的frame雖然改變了,可是內部參考系是不變的,能夠繼續進行其餘變換,只要不更改frame或center或layer的position。

 

總結一下,對於一個view,要肯定顯示樣式,最重要的有2個參數,一個是大小,一個是錨點。大小由size來反映;錨點由anchorPoint和position來反映,其中Position指的是錨點在父節點中的座標值,而anchorPoint含有錨點在本節點中的相對位置。個人理解是,一個view想要肯定位置和大小,首先須要position參數,以後根據archorPoint(做用就是肯定position在view中的位置)和 size (圖片大小)來繪製view。錨點是各類transform以及bounds的size變換的參考點。

相關文章
相關標籤/搜索