自定义UITableViewCells

时间:2015-10-12 23:08:32

标签: ios swift uitableview uiimageview autolayout

我一直在尝试开发一个包含自定义表视图单元格的应用程序。我在教程和在线文档中看了很多,并且遇到了这两行代码:

self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.estimatedRowHeight = UITableViewAutomaticDimension (and tried with 44 here also)

细胞的工作原理如下:

enter image description here

用户可以编写内容并选择是否上传图像。根据实际上是否存在图像并且还根据文本大小,单元格将调整大小。

我的问题是:

  • 我使用标签来保存文本,已经设置为0行。但是我不能将de text对齐到左上角。用户可以写的内容有限制;
  • 保存图像的UIImageView也是固定大小,图像设置在适合的方面(我无法提出更好的解决方案);
  • 我上面显示的代码没有做任何事情。我应该取消选中某些内容还是在单元格属性中执行某些操作?
  • 我应该如何设置约束?标签和UIImageView

1 个答案:

答案 0 :(得分:0)

实际上它很容易。您必须从上到下设置所有约束,但不要设置任何高度限制。

我的建议是从一个简单的布局开始,看它是如何工作的。例如:只创建一个UITextView,其行数设置为0。对于该示例,您只需要4个约束:

V:|-0-[textView](从文本视图到superview顶部)

V:[textView]-0-|(从文本视图到superview底部

•水平约束(左和右)到superview

如果您设法让它正常运行,请添加UIImageView。请记住,您从上到下都有所有垂直约束。

V:|-0-[textView]-0-[image]-0-|

不要在任何地方设置高度限制 - 高度将从intrinsicContentSize方法自动推断。

现在我已经解释了如何做到这一点,我会告诉你不要这样做:)性能可能会很糟糕 - 忘记大约60 FPS,特别是如果你有分页 - 如果你下次加载20细胞,它必须计算20个高度,并且需要花费很多时间=>口吃。我在这里谈论经验。忘记UITableViewAutomaticDimension并手动计算所有内容 - 它并不难。

  

但是AutoLayout怎么样?跟我说话真是太慢了吗?   关于?可能你会感到惊讶,但这是事实。难以置信的慢   如果你想在你的应用程序中看到所有实际的完美平滑滚动   具有较长生命周期的设备(特别是与Android相比)   设备)。您拥有的子视图越多,AutoLayout的工作速度就越快。

Source