ios - - (void)scrollViewDidScroll :(UIScrollView *)scrollView too slow in iOS 8

标签 ios objective-c iphone uiscrollview

我在从 scrollviewdidscroll 中向上/向下滚动和设置 contentoffset 时遇到问题在中学 scrollview导致轻微的抖动行为......或更准确地说是低帧速率。

我目前依赖 scrollViewDidScroll在我的 UIScrollView 中管理视差等效果, 这些效果通过监听 scrollViewDidScroll 来应用,但是这个方法的每次调用的周转时间(由于某种原因)太慢了,并且会导致足够的延迟,使其在滚动时看起来有点糟糕。

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

我尝试了其他方法,例如关闭图像或使用 AsyncDisplayKit但两者都对次数没有影响scrollViewDidScroll被解雇。

在我看来,我可能需要重新构建我创建视差效果的方式,但我犹豫是否有一个快速修复。

最佳答案

首先 - 使用 Xcode Instruments 调试工具“Time Profiler”(Xcode 菜单 Product->Profile,然后从仪器中选择 Time Profiler)。

不要忘记检查“反转调用树”和“隐藏系统库”复选标记,并检测代码中的问题位置。

之后,您可以找到一些解决方案。

至少你可以尝试在设置 contentOffset 之前添加额外的检查。第二个 ScrollView 的属性:

- (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);
    }
}

关于ios - - (void)scrollViewDidScroll :(UIScrollView *)scrollView too slow in iOS 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31980966/

相关文章:

ios - 点击视频按钮时 UIImagePickerController 崩溃

objective-c - UIActionSheet没有背景色

ios - 如何在 Swift 3 中使用 UITextFields 创建开关表达式

objective-c - 在自定义委托(delegate) block UI 中执行工作——为什么?

iphone - 如何使用 iOS 钥匙串(keychain)在 iPhone 上存储 OAuth token ?

iphone - iOS - 如何正确访问数组中的对象属性?

ios - MPMoviePlayerController 不在 iOS7 上播放视频

ios - 如何防止用户同时从图像库中选择和交换图像,使其不进入编辑 View ?

objective-c - 一个单元如何测试与核心蓝牙 API 交互的代码?

iphone - 添加日期选择器以编程方式查看?