gpt4 book ai didi

iphone - UIScrollView - 如何消除滚动之前的延迟?

转载 作者:行者123 更新时间:2023-12-03 20:45:18 26 4
gpt4 key购买 nike

我正在使用 UIScrollView 来显示自定义 UIView。当用户在 UIScrollView拖动手指时,在显示开始更新之前会出现明显的延迟。如果用户持续触摸屏幕,UIScrollView 在短时间内就会变得非常敏感。随后尝试滚动会导致相同的初始延迟,然后是高响应能力。这种延迟严重影响了 View 的可用性,我想摆脱它。

在我编写的一个测试项目中,试图找出这个问题的根源,我只能部分复制该行为。用户第一次滚动是完全相同的 - 但是任何后续的滚动尝试都会立即响应。

我已经尝试设置delaysContentTouches = NO和子类化UIScrollView,以便touchesShouldBegin返回NO,正如在线多个地方的建议,但两者都没有工作了。

我在 iOS 4.3 上使用 MonoTouch,但 Objective-C 答案很好。我会发布代码来帮助说明问题,但由于我无法缩小问题范围,因此代码将远远超过 1000 行。希望这些信息足以找到解决方案。

有谁知道可能导致这种延迟的原因以及如何消除它?

最佳答案

提高滚动性能的一些一般性建议。

让 ScrollView 在屏幕外栅格化:

myView.layer.shouldRasterize = YES;

为 ScrollView 上的每个 subview 设置该属性 - 不要为这些 subview 的 subview 设置它,否则您只会这样耗尽内存。

如果您的 ScrollView 不需要合成,请确保关闭该混合:

myView.opaque = YES;

利用 iOS 模拟器“调试”菜单上显示的这两个功能来使用模拟器进行测试:

  • 离屏渲染颜色
  • 颜色混合图层

如果这不能解决您的问题,并且您已经实现了 UIScrollViewDelegate,请仔细检查以确保您没有在这些方法中执行任何耗时的操作 - 例如,根据您的描述,您可能会在 < strong>scrollViewDidScroll、scrollViewWillBeginDraggingscrollViewWillBeginZooming,如果是的话,请对其进行优化,以便在滚动开始之前发生。另外,请确保您没有在 touchesBegan 中执行任何操作。

关于iphone - UIScrollView - 如何消除滚动之前的延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8456553/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com