当前位置: 代码迷 >> Iphone >> Iphone开发(十四)深入懂得scrollView的contentOffset等属性,实现下拉刷新功能
  详细解决方案

Iphone开发(十四)深入懂得scrollView的contentOffset等属性,实现下拉刷新功能

热度:57   发布时间:2016-04-25 05:56:28.0
Iphone开发(十四)深入理解scrollView的contentOffset等属性,实现下拉刷新功能

holydancer原创,如需转载,请在显要位置注明:

转自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.aScrollView.contentInset = UIEdgeInsetsMake(0, 0, 0, 7.0);

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:

  _|←_cW_→_|_↓_   |       | ---------------   |content| ↑ ↑ |content| contentInset.topcH |content| ↓ |content| contentInset.bottom   |content| ↓---------------  _|_______|___              ↑   (cH = contentSize.height; cW = contentSize.width)

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;

?

  相关解决方案