我的一个表格设置中有一个tableview单元格,其中包含以下视图层次结构
外部水平stackview固定在单元的内容视图的尾部,前缘,底部和顶部边缘。
正确的标签固定在其后缘,前缘,底部和顶部边缘的父stackViewHackView上
在我的控制器代码中,我将单元格设置为动态高度以适合单元格的内容,以便它们可以根据内容大小而增长或缩小
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 30.0
关于自动版面设置。 ( BOLD 中的相关优先级)
我在带有以下代码的简单测试应用程序中用测试数据填充此单元格
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCell(withIdentifier: "testCell", for: indexPath) as! TestTableViewCell
// Configure the cell...
if indexPath.section == 0
{
cell.leftLabel1?.text = "Label1 aabbccdd"
cell.leftLabel2?.text = "Label2 aabbccdd"
cell.rightLabel?.text = "Cell \(indexPath.row) with a 'really really' long string that needs displaying clearly and causing the table cell to resize to fit the content. We're looking for about 3 or 4 lines of text to be displayed"
}
else if indexPath.section == 1
{
cell.leftLabel1?.text = "Label1 aabbccdd"
cell.leftLabel2?.text = "Label2 aabbccdd"
cell.rightLabel?.text = "Cell \(indexPath.row) with a 'really really really' long string that needs displaying clearly and causing the table cell to resize to fit the content. We're looking for about 3 or 4 lines of text to be displayed"
}
else
{
cell.leftLabel1?.text = "Label1 aabbccdd"
cell.leftLabel2?.text = "Label2 aabbccdd"
cell.rightLabel?.text = "Cell \(indexPath.row) with a 'really really really really really really really really' long string that needs displaying clearly and causing the table cell to resize to fit the content. We're looking for about 3 or 4 lines of text to be displayed"
}
return cell
}
这会导致在iPhone 7目标上的模拟器中呈现以下内容
中间的tableview单元格是我一直想要得到的输出。我不希望左侧标签被截断,它们的内容将始终足够小以适合右侧。然而,鉴于右侧的某些内容,较长的Label 2有时会被截断,就像您在顶部和底部的行中看到的那样。
我已经设置了内容压缩抗性,以使左侧的所有元素都具有较高的抗压缩性,而右侧的元素被设置为较低的抗性,以便它们应压缩以为左侧元素留出空间。
有什么想法为什么会发生或如何阻止它发生,以便我的标签始终正确显示?
干杯!
最佳答案
(根据OP添加为答案)
这可能只是“在我看来”,但是...当有约束的简单视图可以完成工作时,我已经看到许多人使用包裹在包裹视图中的包裹视图。
看看我在这个项目中是如何做到的:github.com/DonMag/CellTest2
这真的非常简单,您可以查看标签,看看在更改优先级方面我要做的事很少。我使用了示例字符串,并添加了更多案例来测试变体。
关于ios - UITableViewCell内的嵌套UIStackViews内的UILabel有时会被截断,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44912976/