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

iOS 8.3-UITableView单元格未对齐,向左缩进,ios,uitableview,uiview,ios8.3,Ios,Uitableview,Uiview,Ios8.3,我偶然发现了一种奇怪的行为,添加到UITableView的单元格有时会向左缩进。这只发生在iOS 8.3上,我找不到一个明确的模式来确定这是什么时候发生的 有人经历过同样的事情吗?嗯,这很奇怪 有时似乎UITableViewCellContentView的contentView与UITableViewCellContentView本身不一致。当UITableView本身是比屏幕宽的布局的一部分时(如水平寻呼机的情况),就会发生这种情况 幸运的是,解决方案很简单:添加一个约束,将contentVi

我偶然发现了一种奇怪的行为,添加到
UITableView
的单元格有时会向左缩进。这只发生在iOS 8.3上,我找不到一个明确的模式来确定这是什么时候发生的


有人经历过同样的事情吗?

嗯,这很奇怪

有时似乎
UITableViewCellContentView
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上,但修复似乎是安全的,并且与早期版本向后兼容


一如既往-请用您自己的经验进行评论。

看起来这是因为财产。我检查了我的第二项“相对保证金”,一切都很好。以下是。

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

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

经过一些调查,结果表明,这只发生在xibs中的表视图单元格上


解决方法是删除对页边距的前导/尾随约束,并将其直接设置为superview(即单元格内容视图)。

在iOS 8.3上运行时,我的tableViewCells会看到增加的左右页边距,而在以前的版本中,我没有看到这种情况

设置:

    self.contentView.preservesSuperviewLayoutMargins = NO;
修复了我的问题,并在所有版本上保持我的边距一致,但请注意,这仅在iOS 8+上可用

例如,在这里,您可以这样做:

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

这是给我修的。我刚刚停止使用重新连接到我的插座的
UITableViewCell
imageView
textlab
属性。

不知道您是如何发现这一点的,但我非常感谢。我的许多桌子单元格看起来很奇怪,我不知道为什么。这解决了所有问题。谢谢很高兴我能提供一些帮助。所以我注意到,当我使用8.3 SDK构建并在8.2上运行时,这似乎解决了这个问题,但当我实际将iPad升级到8.3时,它仍然存在。还有其他想法吗?这个解决方案依赖于添加一个约束来修复故障。如果它仍然存在于您的设备上,那么如果删除或影响了上述约束,则会出现其他问题。@Vaiden感谢您的回答。我该把密码放在哪里?在包含UITableView的视图控制器中或其他地方?谢谢您的输入。但是我没有保证金限制,问题是从iOS 8.3开始的。这一定是另一个问题。我(OP)报告的问题是使用我们从XCode 6.2编译和提交的应用程序版本从iOS 8.2升级到8.3的用户遇到的。我也遇到了同样的问题。。这对我来说非常有效。只需将它包装在一个
if(respondsToSelector)
签入
awakeFromNib
中,它就停止了额外的缩进。我也经历了同样的事情!如果我不使用故事板,你能告诉我如何修复吗?self.tableView=UITableView(框架:CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height),样式:UITableView.Plain)self.tableView!。delegate=self.tableView!。dataSource=self.tableView!。registerClass(UITableViewCell.self,forCellReuseIdentifier:“cell”)感谢我在测试iOS 11中的tableView UI故障时遇到的一个问题,iOS 10中没有这个问题。谢谢