iOS 8.3 - UITableView单元格未对齐,左侧缩进

时间:2015-04-10 23:11:33

标签: ios uitableview uiview ios8.3

我偶然发现了一个奇怪的行为,其中添加到UITableView的单元格有时会向左缩进。这只发生在iOS 8.3上,我无法找到何时发生这种情况的明确模式。

任何遇到同样事情的人?

5 个答案:

答案 0 :(得分:13)

我的tableViewCells在iOS 8.3上运行时看到左右边距增加,这是我以前版本没有看到的。

环境:

    self.contentView.preservesSuperviewLayoutMargins = NO;

解决了我的问题并在所有版本上保持我的边距一致,但要注意这只能在iOS 8 +上使用。

所以在这里,例如,你可能会这样做:

- (void)awakeFromNib {
    if ([self.contentView respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) {
        self.contentView.preservesSuperviewLayoutMargins = NO;
    }
}

答案 1 :(得分:6)

嗯 - 这很奇怪......

有时UITableViewCellContentView' s contentView似乎与UITableViewCellContentView本身不对齐。当UITableView本身是比屏幕更宽的布局的一部分时(如在水平寻呼机的情况下),就会发生这种情况。

幸运的是,解决方案很简单:添加约束以使contentView与其父对齐。这只能以编程方式完成,因为您无法在布局编辑器中编辑contentView的约束。

- (void)awakeFromNib {
    // Initialization code

    // iOS 8.3 bug, where contentView's x position isnt aligned with self's x position...
    // So we add a constraint to do the obvious...
    [self addConstraint:[NSLayoutConstraint constraintWithItem:self.contentView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeLeading multiplier:1.0f constant:0.0f]];
}

这仅在iOS 8.3上开始,但修复程序似乎也安全且向后兼容早期版本。

一如既往 - 请根据自己的经验发表评论。

答案 2 :(得分:4)

看起来是因为layoutMargins属性。我已经取消选中我的约束第二项“相对于保证金”,一切都很好。这是article

答案 3 :(得分:0)

我已经看到了这个问题与我正在开发的应用程序有所不同。我们看到一些表格视图单元格的前导/尾随对齐方式不正确。

它没有连接到iOS 8.3,只有在使用Xcode 6.3构建时才会出现。我可以使用相同的项目并在Xcode 6.2上构建它,但它不会发生。

经过一些调查后发现,这只发生在xibs中的表视图单元格上。

解决方法是将前导/尾随约束移除到边距并将它们直接设置为超视图(即单元格内容视图)。

答案 4 :(得分:0)

这对我来说很有用。我刚刚停止使用UITableViewCell imageViewtextLabel属性重新连接到我的网点。