由于标签很多,UIScrollView性能问题

swa*_*ner 5 iphone uiscrollview

我有一个非常大的UIScrollView(contentSize 8000 x 960),有很多小标签.

只有滚动到标签所属的区域时才会添加标签.因此,首先,流氓是流畅的,但随着越来越多的标签被加载,性能越来越受到影响.

保持滚动顺畅的最佳解决方案是什么?CATiledLayer是可行的吗?或者应该隐藏视图中的标签还是类似的?

非常感谢你的帮助!

斯特凡

编辑: 绘制一些对象而不是使用视图时,我获得了巨大的性能提升; 但是现在,我还有另一个问题; 如果我直接绘制到UIScrollView上,一切都表现很好.但是如果我在UIScrollView上放置一个UIView并绘制它,性能再次下降(两次调用setNeedsDisplayInRect:在scrollViewDidScroll :).

所以层次结构:
UIWindow
UIView
UIScrollView <==这里绘图

工作正常.

但层次结构:
UIWindow
UIView
UIScrollView(大小8000x960)
UIView(大小8000 x 960)<==这里绘制

表现不好.

有什么想法吗?我需要上面的UIView,因为绘图应该是上面的一些UIViews; 所以我将UIViews放在scrollView中并在上面的视图中绘制...

Kon*_*kiy 1

标签重复使用是可能的解决方案之一。有时它并没有多大帮助。当出现新的 UIView 时,将调用 drawRect 方法,这可能会导致动画问题。

有时,最好的解决方案是直接使用 Core Graphics 绘制标签(我的意思是文本),而不创建 UILabel 对象或其他东西。CALayer 会提高性能,但可能不会给您带来太大帮助。

但首先你应该记住,alpha = 0或hidden = YES的视图根本不会被绘制,所以使用它们不会有任何惩罚。也许您应该在使用 Core Graphics 之前尝试隐藏未使用的图形。