iOS开发iOS学习开发iOS开发记录

自定义cell时,[self addSubView:] 和 [s

2018-08-07  本文已影响24人  这个汤圆没有馅

在项目中,自定义cell几乎是不可避免的事情。这边我们自定义三个cell,每个cell都包含imgView和label,布局约束都一样。

Build以后,我们发现三个cell的显示完全一样。这时,我们设self.tableView.editing = YES,再次Build,那么问题来了,如下图

当cell处于可编辑状态时,cell2和cell3布局是正常的,然而cell1布局却发生了错乱。这时我们再看cell3 xib画出来的cell的层级关系,如下图

xib画出来的cell,所有的控件都是在contentView下的。因此,cell3和cell2是一样的,添加在contenView下的控件是不会随cell的编辑状态发生错乱的。

我们再使用Reveal看下整体的图层关系。如下图。cell1中,直接使用self addSubView方法,控件和contenView是同一层级下的。

官网对cell的contenView的解释如下,大意是:如果你想要添加额外的view来自定义cell的时候,你需要将它们添加在contentView上,以确保当cell切换到编辑模式时它们不会出现错乱。

那么结论来了:如果你的自定义cell是不可编辑的,那么使用[self addSubView:][self.contentView addSubView:]效果是一样的;但是如果是可编辑的,那么就必须要使用 [self.contentView addSubView:]

上一篇下一篇

猜你喜欢

热点阅读