如何使用自动布局来移动和调整自定义UITableViewCell的内容?
为了使问题更加清晰,我已将自定义单元格的contentView
指定为浅灰色背景颜色。为了将此问题减少到可能的最小问题,我的自定义单元格只有一个UIImageView
名为ratingImageView
,显示了一些黄色星星;在下图中可以看到三个这样的细胞。
我的ratingImageView
只有4个限制条件; (1)width = 81,(2)height = 40,(3)将中心Y与superview对齐,以及(4)superview的尾随空间= 20。我希望尾随空间为superview约束,以便在滑动删除时出现标准删除按钮时强制图像视图向左移动。但是,它没有如下图所示。
我尝试了许多不同的约束组合,无法按照我的预期进行ratingImageView
转换。
我通过良好的introductory Storyboard tutorial解决了这个问题。我使用好的旧支柱和弹簧来完成这项工作没有任何问题,但我决定尝试使用自动布局并没有运气。
答案 0 :(得分:12)
当我为tutorial启用Autolayout ON
时,我遇到了同样的问题。
问题在于约束Horizontal Space (20)
。默认情况下,此约束的优先级设置为1000
,这意味着高优先级。因此,当显示delete
按钮时,imageView遵守约束并使其自身保持在其位置而不重新定位对应于UITableViewCell(在本例中为PlayerCell)的内容视图。
在与我的同事的合作中,我们找到了解决此问题的方法。以编程方式将约束添加到ratingImageView解决了这个问题。如果有人有比此更好的解决方案,请在此处发布。
Horizontal Space (20)
”,然后在“属性”检查器中将其优先级设置为任何较低的值。在PlayersViewController.m文件中,在cellForRowAtIndexPath
tableView的委托方法中添加以下代码:
UIImageView *ratingImageView = cell.ratingImageView;
NSDictionary *dict = NSDictionaryOfVariableBindings(ratingImageView);
[cell.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[ratingImageView]|" options:0 metrics:nil views:dict]];
答案 1 :(得分:0)
在我的情况下,我已经删除了正确的约束,然后我再次添加它,但这次没有选中“约束到边距”复选框。此复选框默认选中。