我是不是需要删除 UIScrollView 中不可见的子视图以使其平稳运行?

Posted

技术标签:

【中文标题】我是不是需要删除 UIScrollView 中不可见的子视图以使其平稳运行?【英文标题】:Do I need to remove subviews that aren't visible in UIScrollView to keep it running smoothly?我是否需要删除 UIScrollView 中不可见的子视图以使其平稳运行? 【发布时间】:2010-08-16 22:25:31 【问题描述】:

我正在制作一个特殊的 UIScrollView 来显示事件的时间线(如果您熟悉这些事情,就像甘特图一样)并且可能有几十个这样的事件,有些是可见的,有些没有不同次。

我想知道的是:我是否应该做一个类似于 UITableView 的实现来删除已经滚动到视线之外的项目,并在其他项目进入屏幕时重用它们的视图?

这似乎需要一些工作,如果这不会在小范围内影响性能,我不想浪费时间。

我从 UIScrollView 类参考中得到了这个想法:

“管理滚动视图中显示的内容绘制的对象应该平铺内容的子视图,这样视图就不会超过屏幕的大小。当用户在滚动视图中滚动时,这个对象应该根据需要添加和删除子视图。”

感谢您的帮助。

【问题讨论】:

【参考方案1】:

这取决于滚动视图中的每个项目需要多少内存。除非您构建它或提供有关确切数量以及 UIScrollview 中每个元素包含的内容的更多信息,否则您无法真正分辨出来。移除不可见的项目并不是一项繁重的工作,但它可能会出现一些问题。我会先尝试它而不删除它们并优化您添加到滚动视图的元素,以便它们使用尽可能少的内存,然后使用工具来检查您的内存使用情况。然后从那里去。希望对您有所帮助。

【讨论】:

此时它们将是没有图像的 UIButtons 和黑色背景的普通 UIViews 的子类。至于数量,最终取决于用户,但我不希望在极端情况下超过 40。 只要你的应用程序中的其他内存管理良好,我认为你在屏幕上绘制它们不会有特别的问题。如果您喜欢它,请尝试使用 dequeing 系统,这绝对是值得学习的好东西,一旦您了解了它,您就可以将其应用于许多不同的问题。 嗨,Alex,您应该将此问题标记为答案,除非您希望添加更多内容并重新定义您的问题。如果您需要更多详细信息来完成您的问题,请继续提问,我本人或社区将提供。 对不起,我需要几天时间才能回到这些,我只是在业余时间编程。感谢您的回答。

以上是关于我是不是需要删除 UIScrollView 中不可见的子视图以使其平稳运行?的主要内容,如果未能解决你的问题,请参考以下文章

如何正确地将不可滚动的 UITableView 放入 UIScrollView?

UIScrollview 是不是需要在视图上?

如何将项目添加到 UIWebView 的 UIScrollView

UIScrollView 滚动,啥时候删除?

如何创建不可删除的通知?

我是不是必须在 UIScrollView 中添加视图才能滚动这些视图?