1. 程式人生 > >cell中label有多行文字的適配

cell中label有多行文字的適配

案例場景:

cell裡有多個控制元件,其中包含一個label,此label的文字(欄位為value)數目不一定,且為了好看,label每行文字間要求有一定的間距

1.首先想到的是計算某段文字的高度的方法 boundingRectWithSize計算文字的高度,NSMutableAttributedString的NSMutableParagraphStyle方法設定行間距,但是1:由於此label用到了sizettoit方法;2:且在heightforrow方法中NSMutableParagraphStyle的setLineSpacing方法設定的行間距根本沒有被加進去,故在cell中計算的高度與heightforrow中計算的高度有出入,且在heightforrow方法中根本無法對此label的sizetofit方法對label高度產生的影響進行計算

2.由於label在cell中使用了sizetofit方法,導致heightforrow方法計算label高度不準確。故在cell中及heightforrow’方法中計算label高度時,建立了一個透明的label1,label1的內容取value欄位,在label1賦值為value後,label1呼叫sizetofit方法後,將label的高度設定為label1.height。通過建立label1的方法成功解決了cell及heightforrow方法中計算label高度不一致的bug。

注意:此label在heightforrow及cell類中的高度都要建立新的label1來計算,為了避免建立這麼多不顯示的物件,為了避免消耗記憶體,可以在這兩個類中分別建立label1為屬性,只在相應位置改變其frame即可