热门搜索 :
考研考公
您的当前位置:首页正文

UIScrollView及其子类的布局相关属性

来源:东饰资讯网

在UIKit中UIScrollView三大子类,分别是:UITextView、UITableView和UICollectionView。

一、contentOffset、contentSize和 contentInset属性####

  • frame:一个矩形区域,反映当前view相对于它的superview的位置关系.

  • bounds:是一个矩形区域,反映的是当前view自己的位置关系。
    普通View视图,bounds.origin = (0, 0)
    可滑动的视图,scrollView.bounds.origin = scrollView.contentOffset;

  • contentOffset、contentSize和 contentInset这三个属性直接相关的是UIScrollView的属性contentView。UIScrollView可以看成是一个两层的复合视图。上层是固定不动的UIScrollView,下层是可以滑动的contentView,contentView的尺寸可以大于上层的UIScrollView。

  • frame和bounds决定的是scrollView在屏幕上的可见区域,contentView代表scrollview中的可显示内容区域,contentOffset、contentSize和 contentInset和scrollview相关。定义如下:

    @property(nonatomic)         CGPoint                      contentOffset;                  // default CGPointZero
    @property(nonatomic)         CGSize                       contentSize;                    // default CGSizeZero
    @property(nonatomic)         UIEdgeInsets              contentInset;         // default UIEdgeInsetsZero. add additional scroll area around content
    
  • contentSize:确定scrollView的属性contentView的宽(contentSize.width)和高(conteSize.height)的属性。(这个最好理解)

  • contentOffset:确定的是当前显示区域(contentView)顶点相对于frame顶点的偏移量。

     假设Controller中的UIScrollView的frame是Controller的bounds。
     UIScrollView往下拉,contentOffset.y < 0;
     UIScrollView往上滑,contentOffset.y > 0;    (上加下减)
     UIScrollView往左滑,contentOffset.x > 0;
     UIScrollView往右滑,contentOffset.x < 0。   (左加右减)
    
  • contentInset:确定的是contentView与scrollView的相对位置。如果scrollView.contentInset = UIEdgeInsetsMake(0, 100, 0, 0), 那么contentOffset坐标为(-100,0)。contentView显示从scrollView中的(100,0)开始显示。

二、scrollsToTop 属性####

  • scrollsToTop是UIScrollView的一个属性,默认为YES。主要用于点击设备的状态栏时,scrollsToTop = YES的控件滚动返回至顶部。
  • 在一个ViewController中有多个UIScrollView实例,要想实现某一实例响应点击设备状态栏,返回顶部,需要把其他的UIScrollView的实例的scrollsToTop属性设为NO。
Top