提问人:Fattie 提问时间:9/26/2023 更新时间:9/26/2023 访问量:29
scrollViewDidScroll 似乎包含隐式动画;如何禁用?
scrollViewDidScroll seems to contain implicit animation; how to disable?
问:
具有任何简单的表格视图或其他滚动视图。
scrollViewDidScroll(_ scrollView: UIScrollView) {
let up = scroll.contentOffset.y
print("up \(up)")
}
只需在屏幕中间添加一个小图像,并对其位置进行限制。滚动时上下移动图像。
scrollViewDidScroll(_ scrollView: UIScrollView) {
let up = scroll.contentOffset.y
print("up \(up)")
exampleConstraint.constant = up
}
有趣的是,正如您将清楚地看到的那样,约束更改将以动画形式呈现。
这似乎不是由 UIKit 中常见的垃圾引起的,它隐式地对图层进行动画处理(in re in re)。(我试着一直往下修复图层。相反,似乎所有内容都以某种方式包裹在典型的视图动画中,或者其他东西在起作用。scrollViewDidScroll
(作为测试,在按钮等上尝试相同的操作,它正常工作,没有动画。exampleConstraint.constant = up
我发现的唯一解决方法是
scrollViewDidScroll(_ scrollView: UIScrollView) {
let up = scroll.contentOffset.y
print("up \(up)")
DispatchQueue.main.async { [weak self] in
exampleConstraint.constant = up
}
}
这不是很好。
(除此之外,你被一帧帧不同步,这看起来很可怕。
请注意,在这种情况下,当然会完全失败并且不做任何事情(就像在几乎所有情况下一样!UView.performWithoutAnimation
有没有一种方法(或至少是更好的方法)在您 例如时关闭“内部”的动画。匹配动作?scrollViewDidScroll
答: 暂无答案
评论