匹配自定义和标准UITableViewCell类型的左对齐

Ben*_*ohn 30 uitableview ios autolayout

UITableViewCell在故事板中定义自定义.我也使用了一些内置的标准样式单元格.我需要设置约束,以便我的自定义单元格与平台定义的单元格匹配(在左侧正确对齐它们的标题).

我注意到,在iOS版本和运行它的设备之间,单元格的左对齐会发生变化.它看起来像左对齐相同的默认单元格separatorInset.

这里是UITableViewCell小号separatorInset几设备和iOS版本:

  • iPad上7-15点.
  • iPad上8 - 20点.
  • iPhone上7 - 15点.
  • iPhone上8 - 16点.

其他设备(iPhone 6 +,iPad Mini)可能有所不同 - 我没有详尽检查.

您将如何确保自定义单元格和内置单元格的标签左对齐?

是否有一种合理的方法来获取这些插入默认值并在故事板中设置的自动布局约束中使用它们?代码怎么样?

Ric*_*ick 34

我有同样的问题,但另一个答案无法帮助我,因为我在UITableViewController中使用静态单元格.经过一些试验和错误后,我终于找到了一种方法来解决separatorInsetiPhone 6+上的问题而无需一行代码.

在此输入图像描述

我只是将UILabel的左边缘与左边距的值[内容视图(当前距离= 0)]对齐.并且还将UILabel的X位置更改为0.(对于我的情况,在Interface Builder中,边距为7,UILabel的X = 8).对齐适用于iPhone 4S,5S,6和6+.

编辑:这改变了的XCode 7.附加步:将各单元的集"保留上海华边距" TableViewCellcontentView为TRUE或检查它在IB - >尺寸检查.请参阅@ tebs1200的答案.

希望这可以帮助.


teb*_*200 30

您可以在故事板中实现Mark纯粹建议的解决方案:

  1. 确保选中自定义单元格.

    在视图树中选择的表视图单元格

  2. 确保在"尺寸"检查器中选择" 保留Superview边距"

    在

  3. 现在选择单元格的内容视图

    在此输入图像描述

  4. 确保此处也选择了" 保留Superview边距"(请参阅步骤2中的图像).

  5. 在自定义原型单元格中选择标签(或其他视图).
  6. 约束它的边缘距离边缘0像素.

    在此输入图像描述


Mar*_*ark 7

对我有用的是将这两行添加到我的自定义UITableViewCell实现中:

self.preservesSuperviewLayoutMargins = YES;
self.contentView.preservesSuperviewLayoutMargins = YES;
// ... add test view to content view...
Run Code Online (Sandbox Code Playgroud)

然后我使用默认间距的自动布局:

[self.contentView addConstraints:[NSLayoutConstraint 
  constraintsWithVisualFormat:@"H:|-[testView]-|" options:0 metrics:nil 
   views:@{@"testView":testLabel}]];

[self.contentView addConstraints:[NSLayoutConstraint 
  constraintsWithVisualFormat:@"V:|-[testView]-|" options:0 metrics:nil 
   views:@{@"testView":testLabel}]];
Run Code Online (Sandbox Code Playgroud)