UITableViewCellAccessoryCheckmark和AutoLayout约束

我有自定义的UITableViewCell和pipe理我的单元格的select。 选中单元格并显示复选标记时,单元格Content View宽度会缩小,带有后续约束的标签将移动到左侧。 如何有效避免内容移动?

我不想将约束设置为领先,因为我有灵活的tableview宽度,他们是正确的alignment。 当我想通过IBOutlets更新代码中的代码约束时,我遇到了麻烦,因为我在cellForRow:返回了UITableViewCell多个子类cellForRow:并且在didSelectRowAtIndexPath:遇到了无法识别的select器错误didSelectRowAtIndexPath:尝试在代码中设置约束时。 任何优雅的解决 谢谢。

在这里输入图像说明

在这里输入图像说明

此行为是devise使然。

获取所需行为的最简单方法是在每个单元格上设置一个空的附件视图,将所有内容向左移动与复选标记相同的距离。

我有一个类似的(实际上是确切的)问题,其中复选标记将所有东西都推向左边。

– 编辑:

在我原来的答案几个小时后,我意识到这是一个非常简单的问题。

向左推这是一个推送单元格的contentView的约束。 所以?

将右边的项目(如ibutton)的约束连接到单元本身 ,而不是它的contentView。

约束到单元格视图



– 原始答案( 实际答案在上面,这是logging ):

我只是意识到这是一个非常简单的解决scheme。 我有一个button,当检查标记打开时被向左推,我必须保持一个约束,以保持它的位置(所以'取消'将不会将button向右移动)。 这是从右边的硬编码“宽度”,整体上只是不好的做法。 没关系,我不能'得到'的复选标记'宽度'来做到这一点dynamic。

解?

从左边持有一个约束。

而已。 我也有一个标签,所以在我的情况:约束从button左边的标签(所以他们不会重叠),从左到左的内容视图button。 基本上,右边的任何动作都不会真的“到达”左边(而是让所有的东西“坐”在右边)。

有左边限制的单元格