1却邓、布局
- 1、UIView有三個比較重要的布局屬性:frame院水、bounds腊徙、center。CALayer對應(yīng)叫做frame衙耕、bounds昧穿、position勺远。為了能清楚區(qū)分橙喘,圖層用來"position",視圖用了“center”胶逢,但是他們都代表同樣的值厅瞎。
- 2、frame代表了"圖層"的外部坐標(biāo)(也就是在“父圖層上占據(jù)的空間”)
- 3初坠、bounds是內(nèi)部坐標(biāo)和簸,{0,0}通常是圖層的左上角
- 4碟刺、center和position都代表了相對于父圖層anchorPoint所在的位置
5锁保、視圖的frame、bounds、center屬性僅僅是存取方法爽柒,當(dāng)操縱視圖的frame時吴菠,實際上是在改變位于視圖下方CALayer的frame
6、對于“視圖”或者“圖層”來說浩村,frame并不是一個非常清晰的屬性做葵,它其實是一個虛擬屬性,是根據(jù)bounds心墅,position和transform計算而來酿矢,所以當(dāng)其中任何一個值發(fā)生改變,frame都會變化怎燥,相反瘫筐,改變frame的值同樣會影響到他們當(dāng)中的值
7、當(dāng)對圖層做變換的時候铐姚,比如旋轉(zhuǎn)或者縮放严肪,frame實際上代表了“覆蓋在圖層旋轉(zhuǎn)”之后的整個軸對齊的矩形區(qū)域,也就是說frame的寬高可能和bounds的寬高不在一致了
2谦屑、錨點
- 1驳糯、上面提到過,視圖的center屬性和圖層的position屬性都指定了anchorPoint相對于父圖層的位置氢橙。圖層的anchorPoint通過position來控制它的frame的位置酝枢,你可以認(rèn)為anchorPoint是用來移動圖層的把柄。
- 2悍手、默認(rèn)來說帘睦,anchorPoint位于圖層的中點,所以圖層將會以這個點為中心放置坦康。anchorPoint屬性并沒有被UIView接口暴露出來竣付,這也是視圖的position屬性被叫做“center”的原因。
- 3滞欠、但是圖層的anchorPoint可以被移動古胆,比如你可以把它置于圖層frame的左上角,于是圖層的內(nèi)容將會向右下角的position方向移動筛璧,而不是居中了
4逸绎、所以改變anchorPoint時,雖然“位置”改變了夭谤,但是“center”沒有改變
5棺牧、和第二章提到的contentRect 和 contentsCenter屬性類似,anchorPoint用單位坐標(biāo)來描述朗儒,也就是圖層的相對坐標(biāo)颊乘,圖層左上角是{0参淹,0},右下角是{1乏悄,1}承二,因此默認(rèn)坐標(biāo)是{0.5,0.5}纲爸。anchorPoint可以通過制定x和y值小于0或者大于1亥鸠,使它放置在圖層范圍之外