2015-09-10 58 views
1

我想让我的应用程序让长文本文件不必滚动浏览,但有一个选项可以显示所有文件并显示较少(显示较少是默认设置)。我一直在努力做到这一点,但如果不将所有单元格更改为“显示更多”或“显示更少”,我无法做到这一点。这里是我如何使它最初显示少有它有多少字符(消息= post文本,postCellObj =我用来调用单元类的对象)此代码在cellForRowAtIndexPath中完成...展开UILabel文本

if messages.isEmpty == false { 

     var messageString = messages[indexPath.row] as String 
     var messageFinal = "" 

     if count(messageString) >= 200 { 
      var messageNs = messageString as NSString 
      var messageFinal = messageNs.substringWithRange(NSRange(location: 0, length: 200)) 
      postCellObj.message.text = messageFinal as String + "..." 

     } else { 
      postCellObj.message.text = messages[indexPath.row] 

     } 

    } 

如果有人知道如何做到这一点,将不胜感激。谢谢阅读!

+1

使用'label.sizeToFit()'调整UILabel中的文本 –

回答

1

我会在这个设计中使用两个标签。第一个标签用于原始文本,另一个将显示“全部显示”或“显示更少”。

您必须做的唯一一件事就是设置第一个标签(原始文本)的框架。

“显示全部”的框架高度可以通过行高(firstLabel.font.lineHeight)* number_of_lines_you_want来计算。请记住将标签属性“numberOfLines”和“lineBreakMode”设置为“ByTruncatingTail”。

“Show Less”的框架高度可以通过UILabel支持的“sizeThatFits”来计算。参数“size”可以设置为(frame.size.width,MAXFLOAT);

我不熟悉swift,所以我只是描述我将如何处理这个设计。希望这可以帮助!

+0

我已经调整了它在单元格中的文本数量。我只是不知道如何制作它,所以如果我点击一个按钮,它只会改变那个单元格的文本。 –

+1

您可能需要更改单元格的高度并重新加载它(tableView.reloadData,tableView.reloadRowsAtIndexPaths或tableView.reloadSections)。 –