我正在按照本教程制作自定尺寸单元格.
我将自定义单元格注册到表格视图中,在单元格xib中,我手动给出了每个子视图约束.请参阅GitHub中的源代码
在一个单元格的内容视图中垂直排列3个标签在iOS 9中运行良好,但在iOS 8中运行良好(均在设备和模拟器中测试).
在iOS 8中,一个单元格没有拟合高度,并且并非每个标签都显示全部文本.
iOS 8不合适:
iOS 9正如我所料:
任何意见,将不胜感激!
更新
代码viewDidLoad
:
tableView.registerNib(UINib.init(nibName: "SelfSizingCell", bundle: nil), forCellReuseIdentifier: cellIdentifier) tableView.dataSource = self tableView.delegate = self tableView.estimatedRowHeight = 60.0 tableView.rowHeight = UITableViewAutomaticDimension tableView.reloadData()
小智.. 13
在返回单元格之前,在"cellForRowAtIndexPath"方法中添加以下代码.
cell.setNeedsUpdateConstraints() cell.updateConstraintsIfNeeded()
仅使用cell.updateConstraintsIfNeeded() (6认同)
Pochi.. 6
要使其在iOS 8上运行,您需要3件事:
1)在您的视图上设置表"估计行高"加载方法.
tableView.estimatedRowHeight = 200.0
2)实现"单元格的表视图高度...方法".(如果您的类不是'UITableViewController'的子类,并且您自己添加表视图,则删除'覆盖'.
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return UITableViewAutomaticDimension }
3)当你在'table view cell for row at ...'方法中返回你的单元格时,调用'updateConstraintsIfNeeded'方法.
cell.updateConstraintsIfNeeded() return cell
注意:iOS 9+不需要第3步
在返回单元格之前,在"cellForRowAtIndexPath"方法中添加以下代码.
cell.setNeedsUpdateConstraints() cell.updateConstraintsIfNeeded()
要使其在iOS 8上运行,您需要3件事:
1)在您的视图上设置表"估计行高"加载方法.
tableView.estimatedRowHeight = 200.0
2)实现"单元格的表视图高度...方法".(如果您的类不是'UITableViewController'的子类,并且您自己添加表视图,则删除'覆盖'.
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return UITableViewAutomaticDimension }
3)当你在'table view cell for row at ...'方法中返回你的单元格时,调用'updateConstraintsIfNeeded'方法.
cell.updateConstraintsIfNeeded() return cell
注意:iOS 9+不需要第3步