10

如何使用自动布局获取自定义 UITableViewCell 的内容以移动和调整大小?

为了使问题更清楚,我已将contentView自定义单元格的 指定为浅灰色背景色。为了将这个问题减少到可能的最小问题,我的自定义单元格只有一个显示一些黄色星星的UIImageView名称;ratingImageView下图中可以看到三个这样的细胞。

具有自定义单元格和自动布局的表格视图

ratingImageView的只有 4 个约束;(1)宽度=81,(2)高度=40,(3)将中心Y对齐到superview,(4)尾随空间到superview =20。当标准删除按钮出现在滑动删除时,我本来希望超级视图约束的尾随空间强制图像视图向左移动。然而,它不是,如下图所示。

自定义单元格内容不随自动布局移动

我尝试了许多不同的约束组合,但无法ratingImageView像我期望的那样进行转变。

我通过一个很好的介绍性故事板教程遇到了这个问题。使用良好的旧支柱和弹簧进行这项工作没有问题,但我决定尝试使用 Auto Layout 并且没有运气。

4

2 回答 2

12

当我ON教程打开 Autolayout 时,我遇到了同样的问题。

问题是由于约束Horizontal Space (20)。默认情况下,此约束的优先级设置为1000高优先级。因此,当显示按钮时,imageView 遵守约束并使其自身保持在其位置,而不会重新定位对应于 UITableViewCell 的(在本例中为 PlayerCell)内容视图delete

在与我的同事合作中,我们找到了解决此问题的方法。以编程方式将约束添加到 ratingImageView 解决了这个问题。如果有人有比这更好的解决方案,请在此处发布。

  1. 打开故事板并选择 PlayerCell 并展开其约束。
  2. 选择约束“ Horizontal Space (20)”并在属性检查器中将其优先级设置为任何较低的值。
  3. cellForRowAtIndexPath在 PlayersViewController.m 文件中,在tableView 的委托方法中添加以下代码:

    UIImageView *ratingImageView = cell.ratingImageView;
    NSDictionary *dict = NSDictionaryOfVariableBindings(ratingImageView); [cell.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[ratingImageView]|" options:0 metrics:nil views:dict]];

于 2012-12-03T19:23:12.930 回答
0

在我的情况下,我已经删除了右约束,然后我再次添加了它,但这次没有选中“限制到边距”复选框。默认选中此复选框。

于 2015-07-10T13:35:57.863 回答