contentSize、contentInset和contentOffset區別

這幾個都是在ios程序中,經常會注意到的一些小細節,能否真正了解這些,對寫ios程序也有很大的好處。
frame 是UIView中表示此view的一個矩形面積,包括了view在它的superview中的一些幾何上的標識。有起始坐標,也就是origin(CGPoint)和這個矩形面積的寬(width)和高(height)
bounds 每個view,除了有對應它的superview的相關坐標外,它自己也有對應它自己的幾何坐標,所以bounds就是標識它自己坐標關系的一個標識,它有和frame一樣的屬性,但在數值上會有些不同。
center 是一個view的中心,默認是這個view對應superview坐標的中間值。
如下圖


frame_bounds_rects.jpg

假如有個view-A ,它是view-B的一個subview,view-A在view-B上的起始坐標是(40,40)(此坐標是view-B上的坐標關系),view-A的高(height)為380,寬(width)為240.
所以,view-A的frame值是(40,40,240,380) bounds的值是(0,0,240,380) center的值是(160,230). 所以,frame和bounds是有關聯的,修改其中一個的寬或高,另一個也會相應的改變。

contentSize 是scrollview中的一個屬性,它代表scrollview中的可顯示區域,假如有一個scrollview,它的frame為(0,0,320,480),而它的contentSize為(320,960).也就是說,這個scrollview整個內容的大小為(320,960),要通過上下滑動scrollview來查看(320,480)后的內容。
contentOffset 是scrollview當前顯示區域頂點相對于frame頂點的偏移量,比如上個例子你拉到最下面,contentoffset就是(0 ,480),也就是y偏移了480
contentInset 是scrollview中contentView.frame.origin與scrollview.frame.origin的關系,比如contentView的frame為(0,30,320,480),那么contentInset則為(0, 30),

圖.jpg

注:本文轉自新浪微博,但是文章轉載次數太多,無法確認出處,在此聲明。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容