2017-06-18 70 views
0

我已经有了一个UITableView,并且这个单元通过对远程服务的post调用来填充。 我已经将UILabel lineBreakMode属性设置为NSLineBreakByTruncatingTail,并将行设置为2.在单元格xib上,一切似乎都很好。这里是截图:UILabel应该会产生省略号但不起作用

enter image description hereenter image description here

这是一段代码我使用填充后解析从远程服务中检索到的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 
     } 
    } 

但在这里它的结果,也不会产生省略号,但每一件事是上覆 enter image description here

任何想法的问题,其中可能呢?

+0

缺少约束来告诉你的标签它不能超过一定的宽度(比如时间标签或距离标签之前的8个点)?此外,您可能还想检查关于Y位置或高度的黄色警告,并查看结果(修复它,并且可能为字体大小添加适合的缩放比例) – Larme

+0

xib中的橙色线意味着有问题。你可能只是设定框架,而不是约束。 – Sulthan

回答

0

看来你有缺少约束。尝试从标签的右侧边缘设置一个约束到右侧的TimeDistance标签。我会让所有标签都有一个固定的宽度,并设置所有约束与关系Equal,UILabels与内部正确对齐文本。

0

这里的问题是因为你给出的宽度约束。黄色警告表明在运行时标签宽度可以超过任何限制。此外,Y位置或高度设置不正确。您需要在运行时设置这两个约束,否则Label将采用适合文本长度的宽度。