动态添加 UIView,还是创建 UITableView? IOS

Posted

技术标签:

【中文标题】动态添加 UIView,还是创建 UITableView? IOS【英文标题】:To dynamically add UIViews, or create a UITableView? ios 【发布时间】:2014-02-11 23:37:40 【问题描述】:

我是 ios 开发新手。我目前正在开发一个应用程序,该应用程序具有从 Web 服务器返回、映射到数据模型并显示给用户的动态内容。

到目前为止,我已经创建了视图来使用模型,然后将视图作为子视图添加到滚动视图中,计算每个视图的 y 坐标,以便将它们一个接一个地添加。

这种顺序添加的元素是“类似列表”,并且可以是表格视图中的表格单元格。到目前为止,我一直避免使用这种方法,因为我的一些视图具有不同的高度,并且我读到当单元格具有动态行高时,表格视图的性能会显着下降。

我是否会冒险将顺序子视图添加到滚动视图中?对于我所描述的内容,tableview 是更好的解决方案吗?

【问题讨论】:

您是否会受益于任何标准的表格视图行为,如编辑模式、行动画、点击状态栏时滚动到顶部等? 除非您做的事情与表格视图完全不同,否则我会使用 UITableview 并对其进行修改以配合您的设计。通过将 UIViews 添加到 UIScrollView 中,您实际上是在重新发明***。 否,点击状态栏已经将我的滚动视图与子视图滚动到顶部。 @贾斯汀 @logixologist 如果它能让我对我正在尝试做的事情有更多的控制权,我可以重新发明***。它会损害任何性能吗? @JasonMcGraw 将有多少数据来自您担心性能的服务器?如果您不处理海量数据集……那就去吧。每天都在发明*** :) 【参考方案1】:

表格视图性能会随着动态单元格高度而降低的原因仅仅是因为系统必须为每个单元格调用-tableView:heightForRowAtIndexPath: 才能正确计算滚动条。 (尽管这在 iOS7 中发生了变化,添加了 -tableView:estimatedHeightForRowAtIndexPath: 方法。这些方法可以让您为不可见的单元格提供快速而肮脏的估计高度。)

无论如何,这意味着滚动视图将具有相同的性能问题:您必须在将每个子视图添加到滚动视图时计算它的高度。 (正如您已经提到的那样。)事实上,表格视图能够按需加载单元格将在性能方面为您提供许多优于库存滚动视图的优势。)

一般来说,您应该选择最适合您的方法。滚动视图本质上是一个空白画布,您可以在其中“滚动自己”。表格视图为您提供了很多“开箱即用”的功能。如果它们是列表,我会倾向于表格视图。

【讨论】:

这是有道理的。谢谢!【参考方案2】:

您绝对应该使用表格视图。您可以使用 heightForRowAtIndexPath 来管理行高。

【讨论】:

我不反对,但你应该尝试用证据来支持你的建议。

以上是关于动态添加 UIView,还是创建 UITableView? IOS的主要内容,如果未能解决你的问题,请参考以下文章

在 UIView 中动态居中对齐多个不同大小的 UIButton

在 ScrollView 中动态填充 UIView

无法访问 UITableViewCell 中 UIView 的图层属性 [重复]

自动旋转动态 UIView 控制器

如何在 iOS 中将 UIView 添加到 UIScrollView 中(具有动态内容的视图)

无法在 uiview 中动态居中自定义 uibutton