我已经仔细研究过这里关于类似问题的所有问题,无论我做什么,我似乎仍然存在这个问题。我在iOS 8.3上。
您可以在https://github.com/DanielRakh/CellHeightTest.git
找到完整的代码我有一个基于UILabel内容动态调整大小的单元格,该内容因单行文本而异。一切似乎都很好,但是当我开始快速滚动并快速切换方向时
我在调试器中收到警告:
2015-03-10 02:02:00.630 CellHeight[21115:3711275] Warning once only:
Detected a case where constraints ambiguously suggest a height of zero
for a tableview cell's content view. We're considering the collapse
unintentional and using standard height instead.
以下是它在模拟器中的外观。我用红色标出了差异:
这里是IB中的简单设置,其中我有一个UILabel固定顶部(11),底部(11),前导(8)和尾随(8),自定义单元格为45pts:
这是我的代码。除了标签的IBOutlet之外,单元格是一个非常空的自定义子类:
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
var arr = [String]()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
for _ in 1...10 {
arr.append("This is an amount of text.")
arr.append("This is an even larget amount of text. This should move to other lines of the label and mace the cell grow.")
arr.append("This is an even larger amount of text. That should move to other lines of the label and make the cell grow. Crossing fingers. This is an even larger amount of text. That should move to other lines of the label and make the cell grow. Crossing fingers.")
}
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 45.0
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
tableView.reloadData()
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return arr.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! TstTableViewCell
cell.tstLabel.text = arr[indexPath.row]
return cell
}
}

编辑:我发现如果我以编程方式创建单元格并以编程方式设置约束,一切似乎都按预期工作。奇怪的。这似乎是IB + AL问题。