首先先简单介绍一下这两个属性:
-
contentOffset:
scrollView顶点相对于contentView的偏移位置。
-
contentInset:
scrollview的contentview的顶点相对于scrollview的位置。
接下来进入正题,探讨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