2015-09-10 85 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)。 –