今天在Xcoder6.1.1下遇到了UITableView的坑切省。運(yùn)行時警告如下:
Warning once only: Detected a case where constraints ambiguously suggest a height of zero for a tableview cell's content view. We're considering the collapse unintentional and using standard height instead.
Google后得到解決方法:
- 1 在代碼里面設(shè)置cell的默認(rèn)高度
self.tableView.rowHeight = 44;
2 在Storyboard里面調(diào)整cell的高度工禾,讓它不等于44.
3 實現(xiàn)tableview的delegate方法
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 44;
}
上面的方法的確能夠避免警告的產(chǎn)生
但是谓形,如果你的cell不等于44驯击,而且autolayout布局不完美的話携兵,cell是實際高度還是44蕾哟,問題并沒有解決!
舉例說明:
需要一個高度為20的cell來充當(dāng)分割view共缕,設(shè)置cell的高度為20洗出,里面沒有subview,實際顯示為44.
繼續(xù)上面的設(shè)置图谷,添加一個subview共苛,添加約束‘上下左右’都距離superview為0,實際顯示44.
繼續(xù)上面的設(shè)置蜓萄,去掉所有的subview,重新添加一個UILabel澄峰,添加約束‘上下左右’都距離superview為0嫉沽,實際顯示20.
繼續(xù)上面的設(shè)置,去掉UILabel的text俏竞,實際顯示44.
繼續(xù)上面的設(shè)置绸硕,重新加上text,設(shè)置hide為true魂毁,實際顯示變回20
繼續(xù)上面的設(shè)置玻佩,cell高度減小到4, 實際顯示還是20席楚。 將UILabel的字體大小改到1后咬崔,顯示為4. 這個時候如果再把cell高度改回20,實際顯示高度還是4. 字體大小再改回10后烦秩,實際顯示高度正常垮斯。這么看來這種方法,subview的顯示內(nèi)容回影響到superview只祠。先這樣吧兜蠕!
總結(jié)
警告沒有了不意味著程序運(yùn)行就正常了!
添加‘上下左右’約束抛寝,確保superview被撐住
檢查subview的顯示屬性