我的问题是我无法使用相同的设置满足所有这三个要求:
我可以通过将所有约束设置为没有边距的超级视图来改善第一个和第二个问题(在所有标题为“No Margin”的单元格中就是这种情况),但是当我这样做时,边缘之间有太多的空白区域rightLabel和披露指标(如第四个单元格所示)。 我可以通过设置相对于边距的所有约束来解决第二个和第三个问题,但是当我这样做时,iOS 7.1将tableViewCells设置为默认边距为8pts,这与iOS 8.3不匹配。
我想避免将正确的约束设置为IBOutlet并在运行中进行修改。我发布的图像是一个快速模型,我已经用它来演示问题,但我正在处理的应用程序有许多不同的tableViewCell子类,并且必须手动管理所有这些是非常昂贵的。
以前的尝试
我尝试在tableViewController的tableView上实现以下代码:willDisplayCell:forRowAtIndexPath:method,
if ([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) {
[cell setPreservesSuperviewLayoutMargins:NO];
}
我没有看到任何行为上的差异。
我也尝试在tableCell的layoutSubviews方法
上实现以下代码if ([self respondsToSelector:@selector(setLayoutMargins:)]) {
[self setLayoutMargins:UIEdgeInsetsMake(0, 15, 0, 0);];
}
这并没有影响到任何东西,除了导致NoMargin单元格比iPhone 6 +上的分隔符插入更接近左边缘。
我觉得最可能的解决方案在于改变iOS 7.1中的默认tableViewCell边距(因此标题),但我可能错了,并且对创意非常开放。