天天看點

淺談iOS 自動調節文本高度

文字展示是任何GUI開發的一個最正常的程式設計任務。可能一提及文字我們腦中想到的無非就是 Label 和 Text 這兩個關鍵詞,今天我們就談談 Label。

無論在 Windows 或者 Web 開發中當 Label 中顯示的文字内容是一個超長的文本,我們都是習慣于由目前的UI引擎自己去計算10幾年來都是一種常識。直到我用iOS,真是有種想罵娘的沖動啊,設定個Label的自動高度都得有技巧真特麼的坑!

坑就坑吧,與衆多同僚一樣還不照樣得忍受着這個糟糕的UIKit的折磨仍然得用,誰叫 iOS的項目能賣得起價呢。既然不能反抗也隻能學着享受了。

UILabel

如果UILabel獨立存在于view内,預設情況下是顯示單行,而且UIKit會依據UILabel的斷詞政策自動截斷文字來顯示。面對這種情況我們可以使用 iOS8 的自動化局布特性來解決。

具體做法:

  1. UILabel

    增加 高度限制
  2. 将 lines 增加一個最大值(随機)
  3. 進入高度屬性面版,将 "Relation" 選擇為

    Greater Than Equal

這樣 UILabel 就成為一個自增高的标簽控件了。

UITableViewCell

如果UILabel控制放至于

UITableView

中時我們就需要對 tableview 進行一些更改才能讓每個表格行實作自動計算行高度。具體做法如下:

首先在

viewDidLoad()

内加入以下的代碼:

tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 44
           

estimatedRowHeight

這個值隻需要設定一個與實際行高度差不多的整數就行了,其它的就交由 UIKit 自已去算就好了。

然後将

UILabel

lines

屬性設定為 "0" (注意:這個與之前的方式就不一樣了)

完成這兩步我們的 tableview 内的越長文本内容就能實作自動行高計算了。

繼續閱讀