我偶然发现了一个奇怪的行为,其中添加到UITableView
的单元格有时会向左缩进。这只发生在iOS 8.3上,我无法找到何时发生这种情况的明确模式。
任何遇到同样事情的人?
答案 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
imageView
和textLabel
属性重新连接到我的网点。