tableview cell自適應撐高

關於cell的自適應盛高不可避免。iOS7以後又出現了新的方法,在這裏做個簡單的總結。

cell的自適應撐高主要在三個地方做高度設置。第一在自定義cell裏將需要自適應高度的控件fram 設置爲CGRectZero

       

self.answerLable是作爲自適應高度的控件。在這個控件上面還有個20高的時間條

第二,在tableview列表的代理中設置實際的高度。

tableview的代理有一個是直接返回cell的高度的

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

沒錯就是這個。我們把高度計算出來從這裏返回回來,計算某段文字的高度在7.0開始有了變化


這個是7.0纔有的


這個還可以用。但是返回的類型和上面那個有初入。爲了將情況分的更細緻一點,在這裏做了個沒必要的適配,


寬度我們可以自己設置,這裏我設置的是300,高度儘量設置的大,自適應高度後這個會變成準確的值,別忘了加上上面那一段時間條的高度。如果你有好幾個都需要自己控制高度,按這裏的方法都做一邊操作,我們所需要的無非是那段不知道的高度,最後全都加起來。要是寬度自適應的話就把高度設置成定值,寬度設置的儘量大,最後得到的width全部加起來。

這裏設置完之後還有一個地方需要設置

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

這裏代理也是至關重要的


這裏千萬不能忘記設置。上面返回的是cell的高度,但是自適應的self.answerLable的fram還是zero,結果是你看到cell的高度發生了變化,但是自適應高度的控件還是沒有彼岸花。在給text負值之前一定要改變self.answerLabl的自適應高度。這裏就不用加20的時間條了。因爲你改變的只是某個自適應控件的高度而不是整個cell的高度

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章