UILabel 应该产生省略号但不起作用
Posted
技术标签:
【中文标题】UILabel 应该产生省略号但不起作用【英文标题】:UILabel should produce ellipsis but doesn't work 【发布时间】:2017-06-18 10:18:24 【问题描述】:我有一个 UITableView 并且单元格是通过对远程服务的后期调用来填充的。
我已将 UILabel lineBreakMode 属性设置为 NSLineBreakByTruncatingTail
并将行设置为 2。在单元格 xib 上,一切似乎都很好。这是截图:
这是我在解析从远程服务检索到的 JSON 后用来填充文本的一段代码。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
if (posts.count == 0)
return tableView.dequeueReusableCell(withIdentifier:
TableViewCellIdentifiers.emptyCell, for: indexPath)
else
let cell = tableView.dequeueReusableCell(withIdentifier:
TableViewCellIdentifiers.postCell, for: indexPath) as! PostCell
let post = posts[indexPath.row]
cell.userNameLabel.text = post.userName
cell.postTextLabel.text = post.text
cell.timeLabel.text = post.time
cell.distanceLabel.text = post.distance
return cell
但这是结果,它不会产生省略号,但每件事都是重叠的
知道问题出在哪里吗?
【问题讨论】:
缺少约束来告诉您的标签它不能超过某个宽度(例如时间标签或距离标签之前的 8 个点)?此外,您可能还想检查关于它的 Y 位置或高度的黄色警告,并查看结果(修复它,并可能添加一个收缩比例以适应字体大小) xib 中的橙色线表示有问题。您可能只设置框架,而不是约束。 【参考方案1】:您似乎缺少约束。尝试从标签的右边缘设置约束到右侧的Time
和Distance
标签。我会让所有标签都有一个固定的宽度,并设置所有约束关系Equal
,UILabels 与内部的文本正确对齐。
【讨论】:
【参考方案2】:这里的问题是因为您给出的宽度限制。黄色警告表示在运行时标签宽度可以超过任何限制。 Y 位置或高度也未正确设置。您需要在运行时设置这两个约束,否则Label
将采用适合文本长度的宽度。
【讨论】:
以上是关于UILabel 应该产生省略号但不起作用的主要内容,如果未能解决你的问题,请参考以下文章
UITableViewCell`sizeToFit`中的UILabel在AutoLayout的单元格内不起作用