拖动UIScrollView时,Jittery / laggy UI更新

时间:2014-06-20 16:15:24

标签: ios objective-c uiscrollview drag nsrunloop

我有一个UIScrollView,我纯粹是为了contentOffset使用它。随着contentOffset的更改,我的子视图会根据简单的数学函数移动。大多数情况下,这需要调整y位置,而不是相对于UIScrollView contentOffset.y线性调整。

调整yPosition的一个例子可能是这样的:

CGRect newFrame = subview.frame;
newFrame.origin.y = log(scrollView.contentOffset.y) + 300;
[subview setFrame:newFrame];

UIScrollView没有接收到触摸(~24-30fps)的情况下,模拟器中的一切工作正常并在设备上运行良好,但是当用户触摸屏幕并拖动时,fps会下降到~3-5fps。在拖动和不拖动之间,除了在运行循环中之外,不应该有任何区别。为了进行调整,我甚至在scrollViewDidScroll:

中尝试了这一点
[self performSelector:@selector(updateCards) onThread:[NSThread mainThread] withObject:nil waitUntilDone:YES modes:@[NSRunLoopCommonModes, UITrackingRunLoopMode]];

和变化,但没有效果。

是否有理由让fps下降,我可以做些什么来解决这个问题?我在大多数测试中都使用iPod 5th。

0 个答案:

没有答案