我正在通过衡量tableView
从scrollViewDidScroll(_:)
修改contentOffset
小区的子视图的大小和位置。第一次调用contentOffset
时,scrollViewDidScroll(_:)
似乎会跳转到非零值。
对于UITableView
中的UINavigationController
,iOS 11上的adjustedContentInset
正确允许我在滚动contentOffset
时计算相对tableView
。
例如,如果我滚动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()
中contentOffset
的{{1}}为tableView
,但第一次调用CGPointZero
时,scrollViewDidScroll(_:)
会跳转到contentOffset.y
一个值,它是导航栏和状态栏的高度。在iOS 11上adjustedContentInset
通过提供高度来帮助。
如何在iOS 10上计算出来?
答案 0 :(得分:2)
听起来好像这可能是" x-y"问题。你还没有解释你真正想做的事情,但提到viewDidLoad
表明你试图在viewDidLoad
中获得一些测量值,以便稍后了解多少测量结果发生了变化。但你无法在viewDidLoad
中衡量任何;这太早了。将测量推迟到第一次调用viewDidAppear
之后,您将获得正确的起始值。