添加附件时自定义 UITableViewCell 大小不正确

Posted

技术标签:

【中文标题】添加附件时自定义 UITableViewCell 大小不正确【英文标题】:Custom UITableViewCell does not size properly when Accessory is added 【发布时间】:2015-01-09 04:06:29 【问题描述】:

设置附件后,我无法让自定义 UITableViewCell 正确调整大小。为什么附件会在初始显示上放大单元格大小?当我使用附件集滚动时,尺寸会自行纠正 - 但是,初始视图的尺寸不正确。

我已经多次观看 WWDC14(tableview 中的新功能)视频,并且阅读了许多 *** 问题并尝试了许多解决方案。我想我已经解决了大部分问题 - 单元格确实为动态文本调整大小 - 但我对这种奇怪的初始行为感到困惑。我正在运行 XCode 6.1.1 部署到 ios 8.1。

我正在使用故事板。我有一个 UITableViewController 和自定义 UITableViewCell。我在情节提要中定义了约束,没有约束警告,并且在运行时在控制台中没有看到约束消息。

在我的 UITableViewController viewDidLoad()

tableView.estimatedRowHeight = 44
tableView.rowHeight = UITableViewAutomaticDimension

有覆盖

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCellWithIdentifier("TableViewCell", forIndexPath: indexPath) as TableViewCell

    cell.configure(titles[indexPath.row])

    return cell

这是我的整个自定义 UITableViewCell

class TableViewCell: UITableViewCell 

@IBOutlet weak var titleLabel: UILabel!

func configure(title: NSString) 
    titleLabel.text = title
    titleLabel.font = UIFont.preferredFontForTextStyle(UIFontTextStyleBody)


override func layoutSubviews() 
    super.layoutSubviews()
    titleLabel.preferredMaxLayoutWidth = frame.width

这是在单元格上设置无附件时的样子

这是我在单元格上设置附件披露指示器时的样子

再次,当我使用附件集滚动时,尺寸会自行纠正。我尝试在情节提要中向单元格添加垂直约束,也尝试通过以编程方式添加所有约束但没有成功。感谢您的任何想法。

【问题讨论】:

【参考方案1】:

我也看到了故事板设计的自调整单元格的这个问题。尝试将 self.layoutIfNeeded() 添加到单元格类中 didMoveToSuperview 的覆盖中。我不知道这是否是一个错误,或者我们只是错过了我们应该做的事情。

【讨论】:

谢谢@rdelmar,不幸的是这对我不起作用,并且一些副作用破坏了包装。我的 Xcode 安装/模拟器可能有问题 - 我和一位同事都运行了一个教程项目,但我的实例没有在表格中填充任何数据,而他做到了。我看到非常不稳定的行为。我正在对此进行调查,如果可以的话,我会更新答案。

以上是关于添加附件时自定义 UITableViewCell 大小不正确的主要内容,如果未能解决你的问题,请参考以下文章

调用 reloadData 时自定义 UITableViewCell 内存泄漏

首次加载 UITableViewController 时自定义 UITableViewCell 无法正确显示

实现 willTransitionToState: 时自定义 UITableViewCell 不显示编辑控件

滚动时自定义uitableviewcell空白

TableView 滚动时自定义 UITableViewCell 发生变化

方向更改时自定义UITableViewCell自动布局问题