具有复杂格式的UITableViewCell的最佳方法

Phi*_*ell 10 uiwebview uitableview nsattributedstring ios

我是iOS开发的新手,思考如何最好地解决一个相当简单的设计问题.我想显示一组项目,每个项目都具有草图结构.在给定的集合中,不超过10个项目.

草图

每个项目包括缩略图图像,标题,模糊和一组按钮.有两个并发症:

  1. 文本的数量和按钮的数量是可变的.
  2. 该文本需要一些内部格式(斜体和粗体).

我考虑过这些方法:

  1. 使用具有自定义,可调整大小的UITableViewCell的表视图,可能使用类似OHAttributedLabel的文本.对于可变数量的按钮,要么以编程方式布局,要么可能使用新的集合视图(对于较旧的iOS,必须使用第三方网格视图).

  2. 使用基于UIWebView的自定义单元格的表格视图.

  3. 将整个集合作为一个UIWebView.

  4. 使用带有部分的表格视图; 每个项目都有自己的部分,并将按钮和文本解析为行.

很想获得有关更有经验的iOS开发者如何处理此问题的建议.

编辑:我现在正在考虑最好的方法可能是:

5)使用UICollectionView来完成整个事情.

更新:最后,我把整个事情放在代码中作为自定义表格单元格(即#1).这是一个很好的选择,不仅仅是因为答案中给出的原因,而是因为作为iOS开发的新手,我需要掌握一些东西.甚至没有使用按钮的集合视图,因为我担心性能以及支持iOS5的麻烦.

我确实认为使用整个设计的集合视图(#5)将是一个优雅的解决方案,我实际上开始沿着这条路走下去.然而,上面简化图中未显示的一些复杂情况使得这些并发症变得笨拙.

第二次更新:#1结果是死路一条.我的最终解决方案使用了UIWebView(#3) - 请参阅答案.

Phi*_*ell 2

我最初接受(并实现)@Daij-Djan 的答案,但现在我相信最好的方法是#3(UIWebView)。这取决于性能。

UITableView 在具有子视图的自定义单元格上表现良好,特别是在具有不同高度的单元格的上下文中。一排排按钮使滚动变得断断续续。正如Apple在单元格和表视图性能中所建议的那样,我确保子视图都是不透明的,但是无法遵循“避免内容重新布局”的建议。

添加动态单元格高度和属性字符串,这些表格的滚动效果非常差。我想下一个优化是重写drawRect,但那时我决定尝试UIWebView。

UIWebView 也不是没有性能问题!随着内容的增长,它的滚动性能会很快下降,但是,我可以通过隐藏内容并让用户根据需要“打开”它来管理它。