我一直在尝试开发一个包含自定义表视图单元格的应用程序。我在教程和在线文档中看了很多,并且遇到了这两行代码:
self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.estimatedRowHeight = UITableViewAutomaticDimension (and tried with 44 here also)
细胞的工作原理如下:
用户可以编写内容并选择是否上传图像。根据实际上是否存在图像并且还根据文本大小,单元格将调整大小。
我的问题是:
UIImageView
也是固定大小,图像设置在适合的方面(我无法提出更好的解决方案); UIImageView
?答案 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的工作速度就越快。