我希望通过测量 contentOffset
来修改 scrollViewDidScroll(_:)
中 tableView
单元格 subview 的大小和位置。第一次调用 scrollViewDidScroll(_:)
时,contentOffset
似乎跳转到非零值。
对于 UINavigationController
中的 UITableView
,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()
中,tableView
的contentOffset
是CGPointZero
,但是第一次 >scrollViewDidScroll(_:)
被调用,contentOffset.y
跳转到一个值,即导航栏和状态栏的高度。在 iOS 11 上,adjustedContentInset
通过提供该高度来提供帮助。
如何在 iOS 10 上计算此值?
最佳答案
听起来这可能是一个“x-y”问题。您还没有解释您真正想要做什么,但提及 viewDidLoad
表明您正在尝试在 viewDidLoad
中获取一些测量值,以便稍后了解该测量值发生了多少变化。但是您无法在 viewDidLoad
中测量任何东西;太早了。将测量推迟到第一次调用 viewDidAppear
时,您将获得正确的起始值。
关于ios - 模仿 iOS 10 上的 adjustmentContentInset?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50588377/