昨天晚上被自動布局裡自定義行高磨了一晚上,簡直快要瘋掉。我是利用masonry來進行自動布局的,布局很簡單,就是cell裡面放兩個label,可是,在我新增完約束之後,控制台就會列印一大堆東西,約束是這樣的:
_titlelab.font= [uifontsystemfontofsize:28*ttscreenwith/640];
[_titlelabmas_makeconstraints:^(masconstraintmaker*make) ];
_infolab.numberoflines= 0;
_infolab.font= [uifontsystemfontofsize:24*ttscreenwith/640];
[_infolabmas_makeconstraints:^(masconstraintmaker*make) ];
如上約束,在不動態增加高度的情況下是完全沒有問題的,而我使用了動態增加行高的方法之後問題就來了。想來想去,回頭看看我加的約束,中心為cell的中心,距離上邊距15,下邊距15,但此時tableview的**方法裡面heightforrow寫著
[cell setneedsupdateconstraints];
[cell updateconstraintsifneeded];
cell.bounds= cgrectmake(0.0f, 0.0f, cgrectgetwidth(tableview.bounds), cgrectgetheight(cell.bounds));
[cell setneedslayout];
[cell layoutifneeded];
cgfloatheight = [cell.contentviewsystemlayoutsizefittingsize:uilayoutfittingcompressedsize].height+ 1;
returnheight;
此時先執行cell裡面的約束,在沒有對cell進行賦值的情況下height是為1的,好吧,此時它們倆衝突了,最後想來想去,解決辦法就是給tableview乙個預估的高度,這樣保證了約束不與行高衝突.我給的預估高度是
[uiscreen mainscreen].bounds.size.width
*60/320
成功~~~~~
iOS UILabel自定義行間距時獲取高度
參考 本文介紹一下自定義行間距的uilabel的高度如何獲取,需要借助一下開源的uilabel控制項 tttattributedlabel import tttattributedlabel.h 直接上 nsstring str uilabel自定義行間距時獲取高度,uilabel自定義行間距時獲取...
自定義約束下的cell的高度
xib中包含了uilabel,由於uilabel的高度是不確定的,所以cell的高度也是不確定的 cgfloat tableview uitableview tableview heightforrowatindexpath nsindexpath indexpath ios7出現了估計高度 取代了...
GDI 繪製自定義行距的文字(續)
在上文 gdi 繪製自定義行距的文字的三種方法。中,介紹了繪製自定義行間距的多行文字的方法。在第三種的方法中,啟用了gdipdrawdriverstring這個函式。這個函式可以定義每個字元的位置,這是它的優點。不過它的缺點也比較明顯。一是它定義的字元位置是以字元的左下角為基準的,和一般的概念是兩樣...