在我的应用程序中,我有一个表格视图,每个单元格中都有图像,标签和文本视图。我希望能够根据文本视图中的内容量自动调整单元格大小。 (文本视图是最低的文本。)
到目前为止,我已经添加了正确的约束;文本视图的前导,尾随,顶部和底部,并禁用了滚动和编辑。
在我的tableViewController.swift文件中,我编写了这段代码:
override func viewWillAppear(_ animated: Bool) {
tableView.estimatedRowHeight = 100
tableView.rowHeight = UITableViewAutomaticDimension
}
然而,这不起作用,因为当我向文本视图添加更多文本时,它只是切断了。
也许这与卡片看起来有点关系,我在每个单元格中都有一个UIView充当卡片。
老实说我不知道我做错了什么
下面的图片是我的应用程序的样子,如果有人可以提供帮助,那将非常感谢
答案 0 :(得分:7)
检查您的约束是否如此(基于您的图像):
imageView:设置为容器的Top和Leading,具有修复高度和宽度值。
标签:您可以将其设置为图像的顶部和水平空间,并具有固定高度和宽度。
textView:导致图像,顶部空间标签,尾部和底部到容器。
继续使用
tableView.estimatedRowHeight = 100
tableView.rowHeight = UITableViewAutomaticDimension
答案 1 :(得分:3)
更新为Swift 4.2
使用:
UITableView.automaticDimension
代替:
UITableViewAutomaticDimension
答案 2 :(得分:1)
确保内容模式设置为Scale To Fill
的{{1}}
确保UITextView
和卡UITextView
尝试将估算的高度添加到UIView
:
viewDidLoad
由于override func viewDidLoad() {
tableView.estimatedRowHeight = 100
tableView.rowHeight = UITableViewAutomaticDimension
}
上方的UIView
,可能AutoHeight无效。尝试为UITextView
中的sizeToFit
调用layoutIfNeeded
和UIView
方法:
cellForRowAt
您还可以尝试override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Identifier", for: indexPath) as! CustomTableViewCell
cell.vwCard.sizeToFit()
cell.vwCard.layoutIfNeeded()
return cell
}
和sizeToFit
以及layoutIfNeeded
。
希望这有效..
答案 3 :(得分:0)
将textView的底部设置为白色UIView的底部,并确保白色UIView具有左,右,顶部和底部约束条件:)