轉自holydancer的CSDN專欄,原文地址:http://blog.csdn.net/holydancer/article/details/8056305
?
scrollView的屬性有很多,我當初在研究scrollView的時候被它的contentOffset,contentInset等屬性弄得糾結萬分,昨天要寫一個下拉刷新的demo,contentOffset等陰暗的嘴臉又浮現在我的眼前,加上前一陣子項目緊,好久沒寫博客了,今天就挑個時間把這幾個東東給扒一扒,加深下印象的同時給廣大同胞一些別的思路,便於深入理解;
scrollView不用多說了,可滾動視圖,可以在有限的屏幕空間上顯示大於屏幕尺寸的內容,端得是方便無比;舉個我個人覺得比較恰當的例子,就像兩張重疊在一起的紙,上面的紙中間有個320*480的屏幕狀的洞,然後下面的紙可以無限大,顯示是內容,你可以將手指通過這張洞來移動下面的紙,來閱讀上面的信息,所以,懂了吧。。現在來介紹一下scrollView三個基本的要理解的屬性;
contentSize
蘋果官方文檔的解釋是:The size of the content view.所以很好理解,contentSize也就是scrollView可滾動的區域;
contentOffset
蘋果官方文檔的解釋是:The point at which the origin of the content view is offset from the origin of the scroll view.注意,這裏標註的是point,是當前顯示的區域的origin相對於整個scrollView的origin的位置;
contentInset
蘋果官方文檔的解釋是:The distance that the content view is inset from the enclosing scroll view.注意,這裏說得是distance,四個值分別是上下左右,就像上面那個例子,屏幕狀的洞和下面的紙的邊緣之間是有距離的;默認值是?UIEdgeInsetsZero,也就是四個值都爲0,我在stackOverFlow上發現了一個很形象的最佳答案,粘貼如下:
?
It sets the distance of the inset between the content view and the enclosing scroll view. Here's a good?iOS Reference Library article on scroll views?that has an informative screenshot (fig 1-3) - I'll replicate it via text here:
The scroll view encloses the content view plus whatever padding is provided by the specified content insets. |
?
scrollView中還有好多別的屬性,比如tracking,zooming,decelerating等,什麼 touch 後還沒拖動的時候,滾動後手放開的時候,是否要自動滾到subView的邊界處等等,網上有很好的總結說明,官方library裏也介紹得很詳細很形象,這裏就不多說了,上面介紹的這三個屬性很基本很重要,如果要加深理解,可以看我附件中的代碼,下拉刷新的,參照網上一個朋友的源碼自己實現了一下,果然很好用;另外,scrollView也經常用在登陸界面中,一般是彈出鍵盤時候,輸入框的向上平移,所以,反正很重要;對了,下拉刷新一般都是和tableView一塊兒實現,tableView也是scrollView;
?