为了使问题更加清晰,我已经将我的自定义单元格的contentView指定为浅灰色背景颜色.为了减少这个可能的最小问题,我的自定义单元格只有一个名为ratingImageView的UIImageView显示一些黄色星;在下面的图像中可以看到三个这样的单元格.
我的ratingImageView只有4个约束; (1)width = 81,(2)height = 40,(3)将中心Y对齐到超视图,(4)拖尾空间到超视图= 20.当滑动删除时出现标准删除按钮时,我会期望尾随空间超越约束以强制将图像视图向左.但是,从下图中可以看出,
我已经尝试了许多不同的约束组合,并且不能像我所期望的那样使ratingImageView转换.
我遇到这个问题通过一个很好的introductory Storyboard tutorial.我没有任何问题,使这个工作使用好的旧支柱和弹簧,但我决定尝试与汽车布局,没有运气.
解决方法
问题是因为水平空间的限制(20).该约束的优先级默认设置为1000,这意味着高优先级.因此,在显示删除按钮时,imageView正在遵守约束并使其自身保持在不重新定位对应于UITableViewCell(在本例中为PlayerCell)内容视图的位置.
在与我的同事合作中,我们找到了解决这个问题的解决方案.添加约束到ratingImageView以编程方式解决了这个问题.如果任何人有一个比这更好的解决方案,请张贴在这里.
>打开你的故事板,选择PlayerCell并扩展其约束.
>选择约束“水平空间(20)”,并在属性检查器中将其优先级设置为任何较低的值.
>在PlayersViewController.m文件中,在cellForRowAtIndexPath tableView的委托方法中添加以下代码:
UIImageView * ratingImageView = cell.ratingImageView;NSDictionary * dict = NSDictionaryOfVariableBindings(ratingImageView);[cell.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@“H:[ratingImageView] |”选项:0指标:nil views:dict]];