Swift、自动调整大小自定义 Table 查看单元格
Swift, Auto Resize Custom Table View Cells
在我的应用中,我有一个 table 视图,每个单元格中都有图像、标签和文本视图。我希望能够根据文本视图中的内容量自动调整单元格的大小。 (文本视图是最下方的文本。)
到目前为止,我已经添加了正确的约束;文本视图的前导、尾随、顶部和底部,并已禁用滚动和编辑。
在我的 tableViewController.swift 文件中,我写了这段代码:
override func viewWillAppear(_ animated: Bool) {
tableView.estimatedRowHeight = 100
tableView.rowHeight = UITableViewAutomaticDimension
}
但是,这不起作用,因为当我向文本视图添加更多文本时,它就被切断了。
也许这与卡片有关,我在每个单元格中都有一个 UIView 作为卡片。
老实说我不知道我做错了什么
下面是我的应用程序的图片,如果有人能提供帮助,我们将不胜感激
确保内容模式设置为 UITextView
的 Scale To Fill
确保 UITextView
和卡片 UIView
没有高度限制
尝试将估计高度添加到 viewDidLoad
:
override func viewDidLoad() {
tableView.estimatedRowHeight = 100
tableView.rowHeight = UITableViewAutomaticDimension
}
可能是由于 UITextView
上方的 UIView
导致 AutoHeight 无法正常工作。尝试为 cellForRowAt
中的 UIView
调用 sizeToFit
和 layoutIfNeeded
方法:
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
以及 UITextView
。
希望这有效.......
检查你的约束是否是这样的(根据你的图像):
imageView :设置为容器的顶部和行距,具有固定的高度和宽度值。
标签:您可以将其设置在图像的顶部和水平方向 space,同时固定高度和宽度。
textView:前导到图像,顶部 space 到标签,尾部和底部到容器。
并继续使用
tableView.estimatedRowHeight = 100
tableView.rowHeight = UITableViewAutomaticDimension
在你的 viewWillAppear()
将 textView 的底部设置为白色 UIView 的底部,并确保白色 UIView 具有左、右、上和下约束:)
更新 swift 4.2
使用:
UITableView.automaticDimension
而不是:
UITableViewAutomaticDimension
在我的应用中,我有一个 table 视图,每个单元格中都有图像、标签和文本视图。我希望能够根据文本视图中的内容量自动调整单元格的大小。 (文本视图是最下方的文本。)
到目前为止,我已经添加了正确的约束;文本视图的前导、尾随、顶部和底部,并已禁用滚动和编辑。
在我的 tableViewController.swift 文件中,我写了这段代码:
override func viewWillAppear(_ animated: Bool) {
tableView.estimatedRowHeight = 100
tableView.rowHeight = UITableViewAutomaticDimension
}
但是,这不起作用,因为当我向文本视图添加更多文本时,它就被切断了。
也许这与卡片有关,我在每个单元格中都有一个 UIView 作为卡片。
老实说我不知道我做错了什么
下面是我的应用程序的图片,如果有人能提供帮助,我们将不胜感激
确保内容模式设置为 UITextView
的 Scale To Fill
确保 UITextView
和卡片 UIView
尝试将估计高度添加到 viewDidLoad
:
override func viewDidLoad() {
tableView.estimatedRowHeight = 100
tableView.rowHeight = UITableViewAutomaticDimension
}
可能是由于 UITextView
上方的 UIView
导致 AutoHeight 无法正常工作。尝试为 cellForRowAt
中的 UIView
调用 sizeToFit
和 layoutIfNeeded
方法:
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
以及 UITextView
。
希望这有效.......
检查你的约束是否是这样的(根据你的图像):
imageView :设置为容器的顶部和行距,具有固定的高度和宽度值。
标签:您可以将其设置在图像的顶部和水平方向 space,同时固定高度和宽度。
textView:前导到图像,顶部 space 到标签,尾部和底部到容器。
并继续使用
tableView.estimatedRowHeight = 100
tableView.rowHeight = UITableViewAutomaticDimension
在你的 viewWillAppear()
将 textView 的底部设置为白色 UIView 的底部,并确保白色 UIView 具有左、右、上和下约束:)
更新 swift 4.2
使用:
UITableView.automaticDimension
而不是:
UITableViewAutomaticDimension