带有动态内容的滚动视图的 iOS UITableViewCell

Posted

技术标签:

【中文标题】带有动态内容的滚动视图的 iOS UITableViewCell【英文标题】:iOS UITableViewCell with scrollView with dynamic content 【发布时间】:2012-11-24 10:12:03 【问题描述】:

我正在尝试创建一个表格视图,其中表格视图单元格包含一个滚动视图。滚动视图可以包含一个或两个页面,每个页面包含一个图像视图。请注意,滚动视图只会水平滚动,因此不会干扰将垂直滚动的表格视图的滚动视图。根据内容,我希望使用这些图像视图更新滚动视图,并根据我从服务器收到的响应设置滚动视图内容大小,指示应用程序显示哪些图像。

为了做到这一点,我最初想创建一个自定义 UITableViewCell 子类,并在其中完成所有视图的初始化。

但是,我只考虑性能和内存。我知道 ios 会在需要时自动释放已看到的视图和单元格,并且在尝试显示新内容时(通过使用重用标识符)重用旧单元格。但是,每个单元格将包含一个滚动视图,其内容大小和子视图将在每个单元格中发生变化。我想使用重用标识符来确保最大性能。

谁能指出我可以像这样设置单元格的重用,并成功更改每个滚动视图的内容?

谢谢。

【问题讨论】:

【参考方案1】:

你可以让reuseIdentifier动态化 例如"cell_with_1","cell_with_2","cell_with_x" 其中 x 是图像的数量

这样,可以在合理的情况下重复使用相等的单元格(例如,当视图中的图像数量相同时):“最坏情况”是不重复使用,并且尝试时会产生一点开销,但总的来说我认为它是有益的: )

*分配解除分配和子视图的基本添加很昂贵.. 更改帧或图像对我来说似乎是合理的

【讨论】:

是的,但是在调整大小时,我需要在第二页中释放额外的图像视图,如果它已创建并且下一个单元格仅包含一个图像 啊 :)... 你能让reuseIdentifier 动态化吗?例如"cell_with_1","cell_with_2","cell_with_x" 其中 x 是页数 嗯......你肯定给了我一个想法。这不会影响性能吗? 好吧,它允许在合理的情况下重用(例如,当视图中的图像数量相同时):“最坏情况”是没有重用,而且尝试的开销有点大,但总的来说我认为它有益 感谢您在单独的答案中写下有关重用标识符的评论,我会将其标记为已接受。我应该注意,我现在正在探索将一个 tableview 放在一个单元格中,以便我可以达到相同的效果(参见应用程序 Pulse)。

以上是关于带有动态内容的滚动视图的 iOS UITableViewCell的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 带有内容插入的粘性标题 - 标题视图不像单元格那样滚动

iOS 11:带有不透明导航栏的导航控制器内带有滚动视图的弹出视图控制器在转换期间导致奇怪的内容动画

带有 Angular Material 动态高度标签的可滚动内容元素

iOS 中的动态布局

可滚动选项卡视图中的动态选项卡反应原生

如何在带有 Flutter 的可滚动视图中拥有具有可变高度内容的 TabView?