視圖UIView的大小和位置屬性詳解

UIView類中定義了三個屬性,分別是frame、bounds與center屬性:spa

IKit中的座標系X軸正方向爲水平向右,Y軸正方向爲豎直向下。.net

frame屬性指的是視圖在其父視圖座標系中的位置與尺寸。在建立視圖時,咱們就須要在初始化方法中指定視圖的frame:code

1 - (id)initWithFrame:(CGRect)frame; 

這樣建立了視圖以後,經過addSubview:方法就能夠將建立的子視圖放置在父視圖的指定位置,並以指定的尺寸顯示出來。blog

center屬性理解起來也很簡單,它就是視圖的中心點在其父視圖座標系中的位置座標。簡單講,center屬性就定義了當前視圖在父視圖中的位置。it

那麼bounds屬性呢?它指的是視圖在其本身的座標系中的位置與尺寸。class

因爲視圖的定位必定須要針對父視圖,而不是針對本身,因此bounds屬性並不可以決定當前視圖的位置(由於它與父視圖根本無關,就談不上定位),因此bounds屬性與center屬性是徹底獨立的,前者規定尺寸,後者定義位置。換句話說,修改bounds不影響center;修改center不影響bounds。方法

默認狀況下,當視圖建立後,其本身的座標系原點(0, 0)位於其左上角位置。不過,本地原點位置是會隨時發生變化的。例如將bounds由最初的(0, 0, 100, 100)修改成(50, 50, 100, 100),則意味着本地原點向左向上移動了50。因爲位置和尺寸都未發生變化,因此frame屬性與center屬性不變。總結

總結:當修改了視圖自身的原點位置時,不會影響其自身的位置,而會影響到其子視圖的位置。分享

摘自:http://blog.csdn.net/pucker/article/details/7634479  感謝博主的分享移動

相關文章
相關標籤/搜索