- (void)scrollViewDidScroll :( UIScrollView *)在iOS 8中scrollView太慢了

时间:2015-08-13 06:28:20

标签: ios objective-c iphone uiscrollview

我遇到一个问题,向上/向下滚动并在辅助scrollviewdidscroll上设置scrollview内的内容偏移会导致轻微的抖动行为......或者更准确地说是低帧速率。

我目前依靠scrollViewDidScroll来管理我UIScrollView中的视差等效果,这些效果是通过收听scrollViewDidScroll来应用的,但这种方法的每次调用都需要转换时间是(由于某种原因),太慢,并导致足够的延迟,使其在滚动时看起来有点不好。

有趣的是,iOS 9运行良好。

我尝试了其他方法,例如关闭图片或使用AsyncDisplayKit,但两者都不会影响scrollViewDidScroll被触发的次数。

在我看来,我可能需要重新构建我创建视差效果的方式,但如果有快速修复,我会犹豫不决。

3 个答案:

答案 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
}