【问题标题】:Content hugging and compression resistance on iOS 11iOS 11 上的内容拥抱和压缩阻力
【发布时间】:2017-10-25 22:42:08
【问题描述】:

与 iOS 10 相比,iOS 11 是否更改了内容拥抱和抗压缩 API?这是我在 iOS 10 上使用的设置:

标签 1 的标题很短,标签 2 会产生额外的宽度来填充空间。

[[标签1][标签2--------------]]

标签 1 的标题很长,标签 2 缩小(但不会截断!)为标签 1 腾出空间。

[[很长的标签...][标签2]]

我用于此的唯一约束是前导和尾随。没有宽度,也没有什么花哨的东西。它的工作方式是标签 1 的内容拥抱优先级为 251,而标签 2 的优先级为 250。这使标签 2 具有“创建额外宽度以填充空间”的能力。

然后,标签 1 的抗压优先级为 750,而标签 2 的抗压优先级为 751。这有助于确保标签 2 在收缩时不会被截断。

在 iOS 11 上,这停止了工作。有时标签 1 会过早截断:

[[标签标题...][标签2-------]]

我假设我首先在拥抱和压缩方面做错了什么。否则,也许 iOS 11 改变了什么?或者最后一个选项,iOS 11 引入了一个错误。

【问题讨论】:

    标签: ios swift autolayout


    【解决方案1】:

    是的,我观察到了同样的事情。我有 UITableViewCell,其中有这样的 2 个标签,并且在 iOS 11 更新后它以错误的方式截断它。我已经通过在cellForRowAtIndexPath 方法的末尾添加以下代码行来解决它。

    cell?.layoutIfNeeded();
    

    这条线就像一个魅力,因为它再次更新了您的单元格的约束。

    【讨论】:

    • 它对我有用。您的标签是在 UITableviewcell 中还是在其他一些 UIView 中?
    • 它在 UITableViewCell 中。解决方案是一个奇怪的与占位符文本有关的解决方案。似乎是 iOS 11 的错误。
    猜你喜欢
    • 2014-05-01
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    相关资源
    最近更新 更多