如何在iOS 7.1上更改默认的tableViewCell边距?

时间:2015-08-10 14:28:01

标签: objective-c iphone ios7.1 tableviewcell ios8.3

我的问题是我无法使用相同的设置满足所有这三个要求:

  1. 我主要需要单元格与分隔符插入对齐 7.1& 8.3。
  2. 在没有披露指标的单元格中,我需要 内容的右边缘(即rightLabel)与之对齐 确实有披露的细胞内容的右边缘 指示器(即公开指示器的右边缘)。
  3. 在带有披露指示器的单元格中,我需要距离 rightLabel和披露指标等于距离 在披露指标和屏幕右边缘之间。
  4. 我可以通过将所有约束设置为没有边距的超级视图来改善第一个和第二个问题(在所有标题为“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边距(因此标题),但我可能错了,并且对创意非常开放。

0 个答案:

没有答案