003-圖層幾何學(xué)

1、布局

  • 1、UIView有三個(gè)比較重要的布局屬性:frame、bounds、center。CALayer對(duì)應(yīng)叫做frame、bounds、position。為了能清楚區(qū)分,圖層用來"position",視圖用了“center”,但是他們都代表同樣的值。
  • 2、frame代表了"圖層"的外部坐標(biāo)(也就是在“父圖層上占據(jù)的空間”)
  • 3、bounds是內(nèi)部坐標(biāo),{0,0}通常是圖層的左上角
  • 4、center和position都代表了相對(duì)于父圖層anchorPoint所在的位置
QQ20161221-1@2x.png
  • 5、視圖的frame、bounds、center屬性僅僅是存取方法,當(dāng)操縱視圖的frame時(shí),實(shí)際上是在改變位于視圖下方CALayer的frame

  • 6、對(duì)于“視圖”或者“圖層”來說,frame并不是一個(gè)非常清晰的屬性,它其實(shí)是一個(gè)虛擬屬性,是根據(jù)bounds,position和transform計(jì)算而來,所以當(dāng)其中任何一個(gè)值發(fā)生改變,frame都會(huì)變化,相反,改變frame的值同樣會(huì)影響到他們當(dāng)中的值

  • 7、當(dāng)對(duì)圖層做變換的時(shí)候,比如旋轉(zhuǎn)或者縮放,frame實(shí)際上代表了“覆蓋在圖層旋轉(zhuǎn)”之后的整個(gè)軸對(duì)齊的矩形區(qū)域,也就是說frame的寬高可能和bounds的寬高不在一致了

QQ20161221-2@2x.png

2、錨點(diǎn)

  • 1、上面提到過,視圖的center屬性和圖層的position屬性都指定了anchorPoint相對(duì)于父圖層的位置。圖層的anchorPoint通過position來控制它的frame的位置,你可以認(rèn)為anchorPoint是用來移動(dòng)圖層的把柄。
  • 2、默認(rèn)來說,anchorPoint位于圖層的中點(diǎn),所以圖層將會(huì)以這個(gè)點(diǎn)為中心放置。anchorPoint屬性并沒有被UIView接口暴露出來,這也是視圖的position屬性被叫做“center”的原因。
  • 3、但是圖層的anchorPoint可以被移動(dòng),比如你可以把它置于圖層frame的左上角,于是圖層的內(nèi)容將會(huì)向右下角的position方向移動(dòng),而不是居中了
![QQ20161221-4@2x.png](http://upload-images.jianshu.io/upload_images/2338406-3f9994c804662092.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  • 4、所以改變anchorPoint時(shí),雖然“位置”改變了,但是“center”沒有改變

  • 5、和第二章提到的contentRect 和 contentsCenter屬性類似,anchorPoint用單位坐標(biāo)來描述,也就是圖層的相對(duì)坐標(biāo),圖層左上角是{0,0},右下角是{1,1},因此默認(rèn)坐標(biāo)是{0.5,0.5}。anchorPoint可以通過制定x和y值小于0或者大于1,使它放置在圖層范圍之外

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

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

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