View篇之深入探討布局屬性


概念


View的幾何性質(zhì)是通過它的frame、bounds和center屬性定義的。frame定義了視圖在父視圖坐標(biāo)系統(tǒng)中的源點(diǎn)位置和尺寸大小,通常用于在布局中調(diào)整視圖的位置和大小。bounds定義了可視視圖的內(nèi)部尺寸大小。center通常用來在不改變視圖的大小的前提下調(diào)整視圖的位置。

關(guān)系


1.frame和bounds的size部分兩者是緊密聯(lián)系在一起的,所以改變改變其中任一一個(gè),都會(huì)更新兩者的size。值得注意的是frame的size并不總是等于bounds的size的。

2.實(shí)際上frame時(shí)一個(gè)派生屬性。當(dāng)使用frame來布局時(shí),需要特別注意的是:如果視圖的transform不等于CGAffineTransformIdentity時(shí),frame可能并不能正確反映出視圖的位置,此時(shí)請用bounds和center代替。

猜想


1.在UIKit框架下,View不過是對Layer進(jìn)行了封裝,并接管了處理事件的能力。顯示在屏幕上的依舊是Layer。

2.View的本身視圖和本身圖層共用一套坐標(biāo)系(其實(shí)只有一個(gè)Layer坐標(biāo)系,也不是共用了啦,亦可理解成共用),

3.視圖中的frame,bounds,center只不過是圖層中的frame,bounds,position

4.由于視圖沒有暴露出圖層的anchorPoint,因而在不改變anchorPoint默認(rèn)位置的前提下,center是frame的中點(diǎn)的才成立。

5.這也解釋了為什么對View某些的操作和直接操作Layer的效果是一樣的。


坐標(biāo)系簡析


子視圖(圖層)所在的坐標(biāo)系,是由父視圖(圖層)的bounds所決定的。

center簡析


1.視圖的center與圖層的position是同一坐標(biāo)系下的同一個(gè)點(diǎn)。當(dāng)操作視圖的center時(shí),實(shí)際上是改變位于視圖下方CALayer的position,不能獨(dú)立于圖層之外改變視圖的center。

2.anchorPoint和position的關(guān)系是不同坐標(biāo)系下的同一個(gè)點(diǎn)。(關(guān)于anchorPoint和position的關(guān)系,我將于Layer篇再進(jìn)行解讀吧)

3.圖層的anchorPoint默認(rèn)位于圖層的中點(diǎn),此時(shí)圖層的position位于圖層的中點(diǎn),因而視圖的center是frame的中心點(diǎn)。

4.但是當(dāng)anchorPoint不位于圖層的中點(diǎn)時(shí),此時(shí)圖層的position不位于圖層的中點(diǎn),因而視圖的center不是frame的中心點(diǎn)。

frame簡析


1.視圖的frame與圖層的frame是同一坐標(biāo)系統(tǒng)下的同一區(qū)域。當(dāng)操作視圖的frame時(shí),實(shí)際上是改變位于視圖下方CALayer的frame,不能獨(dú)立于圖層之外改變視圖的frame

2.關(guān)于圖層的frame,我將于Layer篇再進(jìn)行解讀吧

bounds簡析


1.視圖的bounds與圖層的bounds是同一坐標(biāo)系統(tǒng)下的同一區(qū)域。當(dāng)操作視圖的bounds時(shí),實(shí)際上是改變位于視圖下方CALayer的bounds,不能獨(dú)立于圖層之外改變視圖的bounds

2.通過改變bounds.origin,可以改變其所決定的坐標(biāo)系,所有依賴于此坐標(biāo)系的子視圖,其位置都會(huì)產(chǎn)生相應(yīng)的移動(dòng),以適應(yīng)舊坐標(biāo)系到新坐標(biāo)系過渡的需要。這也就是scroll實(shí)現(xiàn)的原理。

3.更深更具體,關(guān)于圖層的bounds,我將于Layer篇再進(jìn)行解讀吧


未完待續(xù)(個(gè)人見解)

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

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

  • Core Animation其實(shí)是一個(gè)令人誤解的命名。你可能認(rèn)為它只是用來做動(dòng)畫的,但實(shí)際上它是從一個(gè)叫做Laye...
    小貓仔閱讀 3,967評論 1 4
  • 在iOS中隨處都可以看到絢麗的動(dòng)畫效果,實(shí)現(xiàn)這些動(dòng)畫的過程并不復(fù)雜,今天將帶大家一窺ios動(dòng)畫全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,694評論 6 30
  • 本文轉(zhuǎn)載自:http://www.cocoachina.com/ios/20150104/10814.html ...
    idiot_lin閱讀 1,686評論 0 11
  • 在iOS中隨處都可以看到絢麗的動(dòng)畫效果,實(shí)現(xiàn)這些動(dòng)畫的過程并不復(fù)雜,今天將帶大家一窺iOS動(dòng)畫全貌。在這里你可以看...
    F麥子閱讀 5,270評論 5 13
  • ** 圖層樹、寄宿圖以及圖層幾何學(xué)(一)圖層的樹狀結(jié)構(gòu)**巨妖有圖層,洋蔥也有圖層,你有嗎?我們都有圖層 -...
    樹根曰閱讀 913評論 0 8

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