美文网首页iOS开发iOS学习开发iOS开发记录
自定义cell时,[self addSubView:] 和 [s

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

作者: 这个汤圆没有馅 | 来源:发表于2018-08-07 17:07 被阅读24次

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

    • cell1 : self addSubView

    • cell2: self.contentView addSubView

    • cell3: 使用xib可视化创建

    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:]

    相关文章

      网友评论

      • 朋友有朋:赞,一直有这个疑问,今天终于明白了!

      本文标题:自定义cell时,[self addSubView:] 和 [s

      本文链接:https://www.haomeiwen.com/subject/fhyavftx.html