[iOS]contentOffset与contentInset的相互影响

首先先简单介绍一下这两个属性:

  • contentOffset:scrollView顶点相对于contentView的偏移位置。

    contentOffset图示

  • contentInset:scrollview的contentview的顶点相对于scrollview的位置。

    contentInset图示

接下来进入正题,探讨contentOffset与contentInset的相互影响:

contentOffset对contentInset的影响:

设置
tableView.contentOffset = CGPoint(x: 0, y: 200)
并且在加载完成时打印
print("tableView.contentOffset = ",tableView.contentOffset)
print("tableView.contentInset = ",tableView.contentInset)

打印结果:
tableView.contentOffset =  (0.0, 200.0)
tableView.contentInset =  UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: 0.0)

设置
tableView.contentOffset = CGPoint(x: 0, y: -200)

打印结果:
tableView.contentOffset =  (0.0, 0.0)
tableView.contentInset =  UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: 0.0)

contentOffset的设置不会对contentInset造成影响。

contentInset对contentOffset的影响:

设置
tableView.contentInset = UIEdgeInsetsMake(10, 20, 30, 40)
并且在加载完成时打印
print("tableView.contentOffset = ",tableView.contentOffset)
print("tableView.contentInset = ",tableView.contentInset)

打印结果:
tableView.contentOffset =  (-20.0, -10.0)
tableView.contentInset =  UIEdgeInsets(top: 10.0, left: 20.0, bottom: 30.0, right: 40.0)

contentInset的设置改变了contentView相对于scrollView的内边距,因此对contentOffset造成了影响。

总结

  • contentOffset的设置不会对contentInset造成影响。
  • contentInset的设置对contentOffset造成影响。
contentOffset的范围:
- UIEdgeInset.left ≤ x ≤ UIEdgeInset.right + scrollView.contentSize.width- scrollView.width
- UIEdgeInset.top ≤ y ≤ UIEdgeInset.bottom + scrollView.contentSize.heigth - scrollView.heigth
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容