自動布局下的自定義行高約束問題

2022-08-30 01:48:08 字數 1117 閱讀 9822

昨天晚上被自動布局裡自定義行高磨了一晚上,簡直快要瘋掉。我是利用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這個函式。這個函式可以定義每個字元的位置,這是它的優點。不過它的缺點也比較明顯。一是它定義的字元位置是以字元的左下角為基準的,和一般的概念是兩樣...