【问题标题】:UIStackView with UILabels in Xcode 7.3Xcode 7.3 中带有 UILabel 的 UIStackView
【发布时间】:2016-07-22 06:31:04
【问题描述】:

自从我更新到 Xcode 7.3 后,UIStackView 出现问题。如果我创建一个空项目并将两个UILabels 放入UIStackView 并具有默认的拥抱和压缩优先级,它会向我显示AutoLayout misplacement 错误。它甚至不适用于UIStackView 中的一个(!)UILabel,所以优先级并不重要(我认为,也许有问题)。

我记得在 Xcode 7.3 之前的版本中一切都很好。我分别检查了两台 MacBook Pro,这是同一个问题。

有人知道怎么解决吗?

【问题讨论】:

  • 为什么这被否决了?我发现它非常有用且具体。

标签: ios xcode autolayout uilabel uistackview


【解决方案1】:

忽略警告。故事板从来没有完全理解堆栈视图。约束在运行时是正确的,这才是最重要的。

【讨论】:

  • 是的,在运行时它可以工作,但在 Interface Builder 中也可以工作到 7.3。 Apple 是否知道这个问题并打算解决它? :(
  • 你有错误号吗? - 所以我也可以将其报告为重复 :)
  • @matt 我怎么能确定约束在运行时是好的?有没有办法在运行时检查歧义?
【解决方案2】:

这是 Xcode 7.3 中出现的一个 bug,所以你可以忽略它,就像他所说的 matt。

问题

使用 UIStackView 时,storyboard 无法计算子视图的内在内容大小

解决方案

如果您讨厌在情节提要中看到警告,您可以像下面这样修复它:

您应该为UIStackView 的每个子视图执行这些步骤

  • 点击子视图的警告
  • 点击“更新帧”选项
  • 在第四个菜单中选择子视图固有大小的“占位符” 检查员视图

这样你不会看到警告,你可以看看是否存在任何歧义

缺点是每次更改子视图时都应该执行此步骤(例如:更改 UILabel 的文本大小)

希望 Apple 在下一个版本中修复此错误

【讨论】:

  • 嘿哈姆扎。谢谢你的截图!它就像一个魅力!很棒的发现!
  • 嘿@RalfHundewadt,不客气,感谢您的反馈:)
【解决方案3】:

我有一个不同的技巧来消除警告并使“更新框架”正常工作。

优势:

不需要在每次文本更改时更改占位符值

缺点:

Xcode 8 推出时不需要的额外视图

步骤:

  • 将每个 UILabel 嵌入到 UIView 中。
  • 根据标签(匹配前导、尾随、底部和顶部)将 UIView 约束为自身大小

似乎 UIStackView(在 Xcode 7 中)无法理解标签的内在内容大小,但可以理解视图的内在内容大小 - 所以将标签放在视图中并立即!

【讨论】:

  • 即使在当前版本的 Xcode 8 (Beta 6) 上,有时这也是必要的。已提交错误。
猜你喜欢
  • 1970-01-01
  • 2019-01-19
  • 2018-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 2023-03-31
相关资源
最近更新 更多