1

我一直在尝试使用 UITableView 重新创建 facebook 样式提要,但没有取得多大成功。我的第一个想法是向包含“卡片”的单元格添加一个新视图,但我无法完成这项工作。有人对我如何做这件事有任何建议吗?

我的另一个问题是如何使每个单元格的高度取决于内容?

附件是 facebook UI 的图像,希望能解释我想要实现的目标。

Facebook 提要用户界面

4

2 回答 2

1

您需要将子视图添加到contentView您的UITableViewCell实例中。要控制行高,tableView:heightForRowAtIndexPath:请查看文档以获取有关此性能影响的说明。

于 2013-06-27T20:11:32.447 回答
1

我会将 UITableViewCell 子类化,使用自定义初始化代码扩展 initWithStyle:reuseIdentifier:,并覆盖 layoutSubviews 以根据您的变量内容定位所有内容。

根据标签的内容及其 UIFont,您可以计算其宽度和高度。

'Wow! Nice Photo!'.sizeWithFont(UIFont.fontWithName('Helvetica', size: 18.0))
 # CGSize width=144.0 height=22.0>

这是我将如何设置变量 UITableViewCell 子类的模板:

class AwesomeCell < UITableViewCell
  def initWithStyle(style, reuseIdentifier: reuse_identifier)
    super.tap do |cell|
      # initialize and add your subviews to contentView
    end
  end

  def layoutSubview
    # layout your subviews
  end

  def calculated_height
    # calculate your height
  end      
end

但正如 aceofspades 指出的那样,您应该意识到动态确定 UITableViewCells 的高度对性能的影响。

如果您可以在标签中显示固定数量的行以保持单元格的整体高度固定,那么您将获得更好的性能。

即使创建几个不同的固定高度 UITableViewCell 子类并根据传入的内容使用适当的子类,也可能会产生更高性能的 UITableView。

于 2013-07-25T16:10:17.707 回答