【问题标题】:Autolayout metrics differs between iOS 7 & 8 for UITableViewCellsiOS 7 和 8 中 UITableViewCells 的自动布局指标不同
【发布时间】:2014-12-11 05:57:51
【问题描述】:

我有一个自定义的UITableViewCell,它只包含一个包含静态文本的UILabel,我在代码中编写了两个Autolayout 约束(使用常规方式但不是视觉格式)来固定单元格容器视图的标签,它适用于iOS 7iOS 8 设备,但在iOS 8 中有一个奇怪的问题:标签的顶部边缘距离容器的顶部边缘12 像素视图(这是正确且预期的指标),但在iOS 8 中比这更多,大约 20 个像素,并且标签的前缘也会发生相同的移动。

这是什么意思?与UIKit 相关的iOS 7iOS 8 之间的变化是否与UITableViewCells 相关,现在在其层次结构中包含一个隐藏的scrollView

附言约束是:

 constraint = [NSLayoutConstraint constraintWithItem:self.myLabel attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeTop multiplier: 1.0 constant:12];
                [self.contentView addConstraint:constraint];


 constraint = [NSLayoutConstraint constraintWithItem:self.myLabel attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeLeading multiplier:1.0 constant:12];
                [self.contentView addConstraint:constraint];

任何帮助将不胜感激...

【问题讨论】:

  • 尝试设置label.layoutMargins = UIEdgeInsetsMake(0,0, 0, 0),在iOS 8中默认边距为8pt。
  • 试过了,没有任何改变
  • 展示您的项目,以便我们知道如何修复它。
  • 很抱歉我不能分享,这是一个大项目

标签: ios iphone ios8 autolayout nslayoutconstraint


【解决方案1】:

在我的情况下,我需要在运行时手动向图像视图添加特定约束,结果是 iOS7(完全附加到单元格的左侧)和 iOS8(正确对齐)中的不同前导对齐方式。问题不仅在单元格中,甚至在 UITableView 约束中:

1) 检查你的 tableview 前导和尾随约束,必须像那些:

对于前导和尾随,有时当您手动将表格视图添加到视图控制器时,将表格视图的左侧和右侧对齐的自然方式将其设置为 -16,这适用于 iOS 8,但不适用于 iOS 7 .

2) 如果您修改/添加一些约束,请检查单元格是否响应 setLayoutMargins(仅限 iOS8),以防更改约束的常量值:

CGFloat leftMargin = 8.0;
if ([self respondsToSelector:@selector(setLayoutMargins:)]) {
    leftMargin = 0.0;
}

[self.contentView addConstraint:[NSLayoutConstraint constraintWithItem:self.userImageView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeLeadingMargin multiplier:1 constant:leftMargin]];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-15
    • 2015-01-11
    • 1970-01-01
    相关资源
    最近更新 更多