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

时间:2019-05-23 23:04:58

标签: ios uitableview

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

尽管我将表格视图置于编辑模式时遇到问题。我想发生的事情是,单元格的内容只向右移动,以便为删除控件腾出空间,而无需更改其布局。实际发生的情况是,单元格的内容视图似乎缩小了,为删除控件腾出了空间。如果标签试图更改其高度,这将导致标签回流其内容,并有时导致布局混乱。

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

1 个答案:

答案 0 :(得分:1)

您正确的是,当出现删除按钮时,单元格的contentView会被调整大小。

一个想法是向单元格的contentView添加一个附加视图。此额外的视图应包含所有布局精美的子视图。

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

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

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

我确定还有一些细节需要解决,但这应该为您指明正确的方向。