【问题标题】:Why are the multiline UILabels in my UITableViewCell truncating on first load, but correcting themselves on scroll?为什么我的 UITableViewCell 中的多行 UILabel 在第一次加载时会被截断,但在滚动时会更正自己?
【发布时间】:2018-07-15 05:20:28
【问题描述】:

我的应用程序中的一个表格视图出现问题,想知道是否有人遇到过类似的情况。我在自定义 tableviewcell 中有 2 个标签 - questionLabelanswerLabel - 它们具有以下约束:

在两个 UILabel 上,我将行数设置为 0,以使它们成为多行,并在两者中添加了 preferredmaxLayoutWidthproperty,如下所示:

cell.questionLabel.preferredMaxLayoutWidth = cell.questionLabel.frame.width
cell.answerLabel.preferredMaxLayoutWidth = cell.answerLabel.frame.width

根据其他 StackOverflow 建议,我在 viewDidLoad() 方法中也有以下内容:

self.faqTableView.rowHeight = UITableViewAutomaticDimension
self.faqTableView.estimatedRowHeight = 140.00

在第一次加载时,标签仍然被截断,即使行设置为 0,而且奇怪的是在标签的不一致位置。然而,当向下滚动屏幕然后回到顶部时,标签会自动更正自己,并且布局是完美的。请看下面的截图:

以前有没有人遇到过这个问题,如果有,您能否指出我正确的方向。我不确定这是我设置失败,还是我的自动布局约束有问题。

【问题讨论】:

  • 你设置lineBreakMode了吗?
  • aaargh,我当时在现场,我仍然无法在几年的iOS开发后找到完全的解决方案。这是我非常讨厌 Auto Layout 的原因之一。
  • @Priya 没有为此设置任何内容,但它设置为“截断尾巴”,我认为这是默认设置。更改这些只是以不同方式截断文本,但问题仍然存在。
  • 设置 label.lineBreakMode = .byWordWrapping
  • @Priya 我已经为标签使用了“内容拥抱和抗压缩优先级”,这似乎也没什么用,恐怕:(

标签: ios swift uitableview autolayout uilabel


【解决方案1】:

像这样添加约束。删除下面几行

cell.questionLabel.preferredMaxLayoutWidth = cell.questionLabel.frame.width
cell.answerLabel.preferredMaxLayoutWidth = cell.answerLabel.frame.width
self.faqTableView.estimatedRowHeight = 140.00

将UILabel的行数设置为零并实现以下方法

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return UITableViewAutomaticDimension;
}

【讨论】:

  • 感谢您试用。不幸的是,虽然它解决了截断问题,但它引入了我之前遇到的问题,即问题和答案标签之间的空间在不同单元格中不一致,而且分隔符由于某种原因被隐藏或覆盖。这些行解决了这个问题,但显然它们带来了这个问题试图解决的新问题:``` cell.questionLabel.preferredMaxLayoutWidth = cell.questionLabel.frame.width cell.answerLabel.preferredMaxLayoutWidth = cell.answerLabel.frame .width ```
  • 其实只是模拟器中缺少分隔线!在实际设备上,这些线条是可见的。我遇到的唯一小问题是在第一个单元格上,问题和答案标签之间的空间有点太大,但就我而言,这是一个很大的改进。我认为这解决了我遇到的主要问题。
猜你喜欢
  • 2015-09-22
  • 1970-01-01
  • 2018-01-26
  • 2019-12-20
  • 2019-07-29
  • 2017-12-08
  • 2011-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多