【问题标题】:Xcode6 Interface Builder constraints not stretching subviewsXcode6 Interface Builder约束不拉伸子视图
【发布时间】:2014-10-16 11:15:08
【问题描述】:

Xcode Interface Builder 快把我逼疯了,我一天中的大部分时间都在谷歌上搜索解决方案。

我有一个包含 UIImageView 的 CollectionViewCell 故事板。 CollectionViewCell 大小为 125 x 125 并选中 Autoresize subviews。

UIImageView 对其父视图有 4 个约束(前导、尾随、顶部、底部),全部设置为 0。这应确保 UIImageView 的大小可以填充父视图。当 CollectionViewCell 缩小到较小尺寸时,UIImageView 的尺寸正确,但当 CollectionViewCell 拉伸到较大尺寸时,它不起作用。

编辑:我用 UILabel 子视图尝试过同样的事情,同样的事情发生了。

这是一个已知问题还是有什么方法可以调试约束?

谢谢

【问题讨论】:

  • 在单元格调整大小时(即在 layoutSubviews 中)尝试在您的 imageview 上调用 sizeToFit
  • 嗨 Anna,我已经尝试过了(参见下面的代码 sn-p),但不幸的是仍然无法正常工作。 @implementation DeckViewCell - (void)layoutSubviews { [super layoutSubviews]; [self.thumbnail sizeToFit]; [self.title sizeToFit]; }

标签: ios xcode interface-builder adaptive-ui


【解决方案1】:

我终于从http://www.nomtek.com/adjusting-your-app-to-ios-8/找到了问题的完整解决方案

首先,我必须确保我的 CollectionViewCell 在 Interface Builder 中检查了 Autoresize Subviews,然后我必须在 ConnectionViewCell 子类上添加以下 awakeFromNib 方法。

- (void)awakeFromNib {

    [super awakeFromNib];

    self.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
}

有了这两件事,即使使用 sizeForItemAtIndexPath 动态调整单元格大小,我的单元格(UIImageView 和 UILabel)的内容也会正确拉伸。

【讨论】:

    【解决方案2】:

    我已经取得了部分进展。

    我正在使用 sizeForItemAtIndexPath 动态设置单元格大小。

    如果我放弃该方法并在 Interface Builder 中设置 CollectionView 的 FlowLayout 的更大单元格大小,它会按预期工作。这意味着约束和子视图大小在编译时更新。

    我仍然很想知道在使用sizeForItemAtIndexPath 时如何动态更新约束和子视图大小。有什么建议吗?

    【讨论】:

    • 因为我一直在学习自动布局,我发现如果你让它尽可能多地工作,它的效果最好。任何时候你手动设置一些东西,它都会放弃,结果变得不可预测。但是,当然,有些事情必须以编程方式完成。在这种情况下,尝试通过修改约束来设置大小:例如,对需要调整大小的东西创建高度和宽度约束,并在视图控制器或自定义视图类中的 updateConstraints 期间修改它们。 (一个模糊的答案,但更多的东西要试验!)
    • 哦,确保你将 translatesautoresizingmaskintoconstraints 设置为 false。
    猜你喜欢
    • 1970-01-01
    • 2015-10-02
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    • 2017-02-24
    相关资源
    最近更新 更多