我正在寻找通过测量tableView的scrollViewDidScroll(_:)来修改contentOffset的单元格子视图的大小和位置。当第一次调用scrollViewDidScroll(_:)时,contentOffset似乎跳到了非零值。
对于UINavigationController中的UINavigationController,iOS 11上的adjustedContentInset允许我在滚动tableView时正确地计算出相对contentOffset。
例如,如果我滚动tableView,我可以计算它滚动的精确数量如下:
override func scrollViewDidScroll(_ scrollView: UIScrollView) {
var adjustedTopInset: CGFloat = 0.0
if #available(iOS 11.0, *) {
adjustedTopInset = scrollView.adjustedContentInset.top
}
let deltaY = scrollView.contentOffset.y - adjustedTopInset
}问题是,由于adjustedContentInset只在iOS 11上可用,您如何计算iOS 10上相同的相对滚动量?
在viewDidLoad()中,tableView的contentOffset是CGPointZero,但是第一次调用scrollViewDidScroll(_:)时,contentOffset.y跳转到一个值,即导航条和状态栏的高度。在iOS 11上,adjustedContentInset通过提供这个高度提供了帮助。
我如何在iOS 10上计算这个数字?
发布于 2018-05-29 17:08:10
听起来这可能是个"x-y“问题。您还没有解释您真正想要做什么,但是提到viewDidLoad表明您正在viewDidLoad中获得一些度量值,以便稍后知道该度量发生了多大的变化。但是你不能用viewDidLoad来测量任何东西,现在太早了。将度量推迟到第一次调用viewDidAppear时,然后您将有一个正确的起始值。
https://stackoverflow.com/questions/50588377
复制相似问题