我遇到一个问题,向上/向下滚动并在辅助scrollviewdidscroll
上设置scrollview
内的内容偏移会导致轻微的抖动行为......或者更准确地说是低帧速率。
我目前依靠scrollViewDidScroll
来管理我UIScrollView
中的视差等效果,这些效果是通过收听scrollViewDidScroll
来应用的,但这种方法的每次调用都需要转换时间是(由于某种原因),太慢,并导致足够的延迟,使其在滚动时看起来有点不好。
有趣的是,iOS 9
运行良好。
我尝试了其他方法,例如关闭图片或使用AsyncDisplayKit
,但两者都不会影响scrollViewDidScroll
被触发的次数。
在我看来,我可能需要重新构建我创建视差效果的方式,但如果有快速修复,我会犹豫不决。
答案 0 :(得分:1)
首先 - 使用Xcode Instruments调试工具" Time Profiler" (Xcode菜单Product-> Profile,然后从仪器中选择Time Profiler)。
别忘了检查那里"反转呼叫树"和"隐藏系统库"选中标记,并检测代码中的问题所在。
之后你可以找到一些解决方案。
至少可以在为第二个滚动视图设置contentOffset
属性之前尝试添加其他检查:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGFloat contentOffsetForSecondScrollView = 123.0; // Calculate second scroll view content offset
// Add additional check, if content offset doesn't change
if (self.secondScrollView.contentOffset.y != contentOffsetForSecondScrollView) {
self.secondScrollView.contentOffset = CGPointMake(0, contentOffsetForSecondScrollView);
}
}
答案 1 :(得分:0)
将所有效果放在下面的方法中。
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
答案 2 :(得分:-1)
请在下面使用委托方法来改进和检测滚动
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
//Your code here
}