【问题标题】:Auto layout with custom UITableViewCell使用自定义 UITableViewCell 自动布局
【发布时间】:2012-10-21 14:20:32
【问题描述】:

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

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

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

我尝试了许多不同的约束组合,但无法像我预期的那样使 ratingImageView 移位。

我通过良好的introductory Storyboard tutorial 工作遇到了这个问题。使用良好的旧支柱和弹簧完成这项工作没有问题,但我决定尝试使用 Auto Layout 并没有运气。

【问题讨论】:

  • 还没有——我只是恢复使用支柱和弹簧。仍然希望有人可以解释如何使其与自动布局一起使用。
  • 这里有同样的问题。同样的教程。希望有人能提供答案。

标签: objective-c cocoa-touch ios6 autolayout


【解决方案1】:

当我将自动布局ON 设置为tutorial 时,我遇到了同样的问题。

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

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-30
      • 1970-01-01
      • 2017-09-05
      • 1970-01-01
      • 2017-05-29
      • 2023-04-07
      • 1970-01-01
      相关资源
      最近更新 更多