Xcoder6.1.1|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|Xcoder6.1.1 坑之一】参考链接
推荐阅读
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- 话说先锋(与著名作家叶兆言对话之一)
- 九月胡杨叶正红(家乡十记之一)
- 互联网创业(先学会避坑,再成为内行)
- 你是个“头脑封闭”的人吗((读《原则》有感之一))
- 问答|问答 | 职场的十个小坑(下)
- Tomcat8带来的坑
- 应试教育是个坑,认真你就输了
- 给妈妈的十封信之一(妈妈,我爱你)
- 【React|【React Native填坑之旅】从源码角度看JavaModule注册及重载陷阱