隐藏或删除uiLabels以提高性能

时间:2011-03-29 07:53:38

标签: iphone uiscrollview release uilabel hidden

我在长滚动视图上有200多个uiLabel,我需要提高滚动性能。当它们不在视野范围内时,隐藏和取消隐藏标签,释放它们并重新创建它们会更好吗? 我已将标签放在它们上面,我目前正在使用它们隐藏/取消隐藏:

for (int i=0; i<42; i++) {
        [theScroller viewWithTag:i].hidden = NO;
    }

反之亦然,由scroll contentOffset.y值触发..

我把我的uiLabels系列放在一个plist中,所以它也很容易发布并重建它们?

感谢您的帮助..

4 个答案:

答案 0 :(得分:1)

由于以下原因,观看次数超过200次会降低效果:

  • 内存使用
  • 显示管理/动画

删除和释放隐藏标签并在需要时重新创建它们绝对会更好:内存占用率会降低,而superview只需要管理几个子视图(再加上重新创建标签的开销不是很高)。 / p>

如果您的滚动视图+标签行为接近表视图的行为,则还有进一步改进的余地:标签重用。从超级视图中删除隐藏的标签,更改其标题/样式并将其重新添加到新位置。

答案 1 :(得分:1)

@Mark是的,最好发布标签,好像它们不在视图中,不在使用中,因此它们可以提高性能并帮助您进行内存管理。

答案 2 :(得分:1)

可能有助于提高性能的一点是将标签设置为不透明。使用透明背景的视图时,性能会下降。

动态创建它们绝对是一种解决方案,但是,您可能会注意到滚动可能会不时地挂起,或者标签在您滚动后不久之后才会出现。

另一种解决方案是使用this article的方法。我们的想法是你要在视图上预渲染标签,最后得到一个静态视图,当你滚动时它应该可以很好地工作。

答案 3 :(得分:0)

如果每个标签都是刚性的,您可以尝试使用表格View而不是滚动视图。

使用自定义表格单元格,每个单元格都有您的标签。