我有一个tableViewCell
let cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "Cell")
具有以下设置:
cell.textLabel?.font = UIFont.boldSystemFontOfSize(15.0)
cell.textLabel?.text = titleString
cell.detailTextLabel?.text = descriptionString
cell.detailTextLabel?.numberOfLines = 0
descriptionString由一个HTML字符串组成。
我已经设置了
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
然而,当detailTextLabel大于1行时,这会导致显示混乱的tableview。 detailTextLabel包装到下一个tableview单元格。
这是什么解决方案? UITableViewAutomaticDimension似乎没有按预期工作。
答案 0 :(得分:0)
首先定义
private let useAutosizingCells = true
override func viewDidLoad() {
super.viewDidLoad()
if useAutosizingCells && tableView.respondsToSelector(Selector("layoutMargins")) {
tableView.estimatedRowHeight = 88
tableView.rowHeight = UITableViewAutomaticDimension
}
}
// MARK: - UITableViewDataSource
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return array.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath)
if useAutosizingCells && tableView.respondsToSelector(Selector("layoutMargins")) {
cell.textLabel?.numberOfLines = 0
cell.detailTextLabel?.numberOfLines = 0
}
return cell
}