文字展示是任何GUI開發的一個最正常的程式設計任務。可能一提及文字我們腦中想到的無非就是 Label 和 Text 這兩個關鍵詞,今天我們就談談 Label。
無論在 Windows 或者 Web 開發中當 Label 中顯示的文字内容是一個超長的文本,我們都是習慣于由目前的UI引擎自己去計算10幾年來都是一種常識。直到我用iOS,真是有種想罵娘的沖動啊,設定個Label的自動高度都得有技巧真特麼的坑!
坑就坑吧,與衆多同僚一樣還不照樣得忍受着這個糟糕的UIKit的折磨仍然得用,誰叫 iOS的項目能賣得起價呢。既然不能反抗也隻能學着享受了。
UILabel
如果UILabel獨立存在于view内,預設情況下是顯示單行,而且UIKit會依據UILabel的斷詞政策自動截斷文字來顯示。面對這種情況我們可以使用 iOS8 的自動化局布特性來解決。
具體做法:
- 為
增加 高度限制UILabel
- 将 lines 增加一個最大值(随機)
- 進入高度屬性面版,将 "Relation" 選擇為
Greater Than Equal
這樣 UILabel 就成為一個自增高的标簽控件了。
UITableViewCell
如果UILabel控制放至于
UITableView
中時我們就需要對 tableview 進行一些更改才能讓每個表格行實作自動計算行高度。具體做法如下:
首先在
viewDidLoad()
内加入以下的代碼:
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 44
estimatedRowHeight
這個值隻需要設定一個與實際行高度差不多的整數就行了,其它的就交由 UIKit 自已去算就好了。
然後将
UILabel
的
lines
屬性設定為 "0" (注意:這個與之前的方式就不一樣了)
完成這兩步我們的 tableview 内的越長文本内容就能實作自動行高計算了。