Xcoder6.1.1 坑之一

今天在Xcoder6.1.1下遇到了UITableView的坑。运行时警告如下:

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 在代码里面设置cell的默认高度

self.tableView.rowHeight = 44;

  • 2 在Storyboard里面调整cell的高度,让它不等于44.

  • 3 实现tableview的delegate方法


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

{

return 44;

}

上面的方法的确能够避免警告的产生

但是,如果你的cell不等于44,而且autolayout布局不完美的话,cell是实际高度还是44,问题并没有解决!

举例说明:

  • 需要一个高度为20的cell来充当分割view,设置cell的高度为20,里面没有subview,实际显示为44.

  • 继续上面的设置,添加一个subview,添加约束‘上下左右’都距离superview为0,实际显示44.

  • 继续上面的设置,去掉所有的subview,重新添加一个UILabel,添加约束‘上下左右’都距离superview为0,实际显示20.

  • 继续上面的设置,去掉UILabel的text,实际显示44.

  • 继续上面的设置,重新加上text,设置hide为true,实际显示变回20

  • 继续上面的设置,cell高度减小到4, 实际显示还是20。 将UILabel的字体大小改到1后,显示为4. 这个时候如果再把cell高度改回20,实际显示高度还是4. 字体大小再改回10后,实际显示高度正常。这么看来这种方法,subview的显示内容回影响到superview。先这样吧!

总结

  • 警告没有了不意味着程序运行就正常了!

  • 添加‘上下左右’约束,确保superview被撑住

  • 检查subview的显示属性

  • 参考链接

你可能感兴趣的:(Xcoder6.1.1 坑之一)