如何使用Rubymotion在UITableView中创建facebook feed样式卡?

时间:2013-05-16 12:11:07

标签: ios uitableview rubymotion

我一直在尝试使用UITableView重新创建Facebook样式的Feed,但没有取得多大成功。我的第一个想法是为包含“卡片”的单元格添加一个新视图,但我无法完成这项工作。有没有人对我这样做有什么建议?

我的另一个问题是如何根据内容使每个细胞的高度变化?

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

Facebook Feed UI

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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。