如何在编辑模式下维护自定义UITableViewCell的内部控件布局?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (20)

我有一个UITableViewCell带有几个多线标签,自动布局的自定义子类我对多线标签进行了约束,使得它们的后缘小于单元格内容视图的后缘,以便它们正确包装。据我所知,这一切都正常。

当我将表视图置于编辑模式时,我遇到了问题。我想要发生的是,单元格的内容只是向右移动,为删除控件腾出空间而不改变它们的布局。实际发生的是,单元格的内容视图看起来缩小了大小,以便为删除控件腾出空间。这会导致标签回流其内容,如果标签试图改变其高度,有时会导致布局搞砸。

是否有推荐的方法在进入编辑模式时移动内容,而不是以较小的宽度重新布局?

提问于
用户回答回答于

如果contentView出现删除按钮,则调整单元格的大小是正确的。

一个想法是为单元格添加一个额外的视图contentView。这个额外的视图应该包含所有精心布置的子视图。

设置此额外视图的约束,使左锚定绑定到contentView的左锚点。但是设置这个额外视图的宽度以匹配单元格的宽度而不是contentView的宽度。

这应该允许整个额外视图(以及所有漂亮的小子视图)在进入编辑模式时作为整体向右移动并且出现删除图标。

但这可能会带来一个新问题。用户点击删除图标后,单元格将在右侧显示“删除”按钮。因此,您可能需要重做约束,以便设置正确的锚点,而不是左侧。约束的这种变化可能需要在自定义单元格的willTransition方法中完成。

我确信有一些细节可以解决,但这应该指向正确的方向。

扫码关注云+社区

领取腾讯云代金券