我在长滚动视图上有200多个uiLabel,我需要提高滚动性能。当它们不在视野范围内时,隐藏和取消隐藏标签,释放它们并重新创建它们会更好吗? 我已将标签放在它们上面,我目前正在使用它们隐藏/取消隐藏:
for (int i=0; i<42; i++) {
[theScroller viewWithTag:i].hidden = NO;
}
反之亦然,由scroll contentOffset.y值触发..
我把我的uiLabels系列放在一个plist中,所以它也很容易发布并重建它们?
感谢您的帮助..
答案 0 :(得分:1)
由于以下原因,观看次数超过200次会降低效果:
删除和释放隐藏标签并在需要时重新创建它们绝对会更好:内存占用率会降低,而superview只需要管理几个子视图(再加上重新创建标签的开销不是很高)。 / p>
如果您的滚动视图+标签行为接近表视图的行为,则还有进一步改进的余地:标签重用。从超级视图中删除隐藏的标签,更改其标题/样式并将其重新添加到新位置。
答案 1 :(得分:1)
@Mark是的,最好发布标签,好像它们不在视图中,不在使用中,因此它们可以提高性能并帮助您进行内存管理。
答案 2 :(得分:1)
可能有助于提高性能的一点是将标签设置为不透明。使用透明背景的视图时,性能会下降。
动态创建它们绝对是一种解决方案,但是,您可能会注意到滚动可能会不时地挂起,或者标签在您滚动后不久之后才会出现。
另一种解决方案是使用this article的方法。我们的想法是你要在视图上预渲染标签,最后得到一个静态视图,当你滚动时它应该可以很好地工作。
答案 3 :(得分:0)
如果每个标签都是刚性的,您可以尝试使用表格View而不是滚动视图。
使用自定义表格单元格,每个单元格都有您的标签。