轉 frame與bounds的區別比較

翻譯文檔上的
bounds是指這個view在它自己座標系的座標和大小 而frame指的是這個view在它superview的座標系的座標和大小
區別主要在座標系這一塊。

很明顯一個是自己爲原點的座標系,一個是以屏幕爲原點的座標系絕對座標。。。相對座標。。。比如屏幕旋轉的時候就要以相對來重繪。 
frame 如果一個按鈕,是在表格裏,按鈕的frame 的座標也是相對的,並不是相對屏幕,也就是說是相對座標,不是絕對座標

我也想知道任何一個uiview如何求得它在屏幕上的座標。

view 的frame是view在它的super view 的位置與尺寸。
view 的bounds可以用來幫助它的subview來定位的 ,layoutSubviews。

Frame  is  in  terms  of superview's  coordinate  system   

框架是從父視圖的座標系統


Bounds   is in  terms  of   local  coordinate  system
是在局部座標系統

frame和bounds是UIView中的兩個屬性(property)。

frame指的是:該view在父view座標系統中的位置和大小。(參照點是父親的座標系統)

bounds指的是:該view在本身座標系統中 的位置和大小。(參照點是本身座標系統)

-(CGRect)frame{

returnCGRectMake(self.frame.origin.x,self.frame.origin.y,self.frame.size.width,self.frame.size.height);

}

-(CGRect)bounds{

return CGRectMake(0,0,self.frame.size.width,self.frame.size.height);

}

 

很明顯,bounds的原點是(0,0)點,而frame的原點卻是任意的。
frame 如果一個按鈕,是在表格裏,按鈕的frame 的座標也是相對的,並不是相對屏幕,也就是說是相對座標,不是絕對座標。
frame 是相對座標。bounds是絕對座標。
Android的開發過程中,絕對座標,這樣畫出來的位置都是相對於屏幕的而不是相對於控件的

 什麼是絕對座標值,相對座標值?
絕對座標是:X,Y    就是相對於座標原點的。                   
例如(15,20)相對座標是:@X,Y   就是相對於參考點(可以是自己設定的一個點)。                 
   例如(15,20)相對於參考點(1,1)的座標,表示:@14,19                           
(15,20)相對於參考點(-1,-1)的座標,表示:@16,21
bounds是指這個view在它自己座標系的座標和大小 而frame指的是這個view在它superview的座標系的座標和大小.
區別主要在座標系這一塊。
很明顯一個是自己爲原點的座標系,一個是以屏幕爲原點的座標系

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章