Xcode 7.3中使用UILabel的UIStackView

时间:2016-04-02 12:48:14

标签: ios xcode autolayout uilabel uistackview

由于我已更新为Xcode 7.3,因此UIStackView出现问题。如果我创建一个空项目并且只在UILabel中放置两个UIStackView并使用默认的拥抱和压缩优先级,则会显示AutoLayout错位信息错误。它甚至不能与UILabel中的一个(!)UIStackView一起使用,因此优先级并不重要(我认为可能存在问题)。

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

有人知道如何解决它吗?

enter image description here enter image description here

3 个答案:

答案 0 :(得分:9)

enter image description here 这是Xcode 7.3中出现的一个错误,因此您可以将其视为他所说的无光泽。

问题

使用UIStackView

时,故事板无法计算子视图的内在内容大小

解决方案

如果你讨厌在故事板中看到警告,你可以像下面这样修理它:

您应该对UIStackView

的每个子视图执行以下步骤
  • 点按子视图的警告
  • 点按"更新相框"选项
  • 选择"占位符"在第四个菜单中的子视图内在大小 检查员视图

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

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

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

答案 1 :(得分:4)

忽略警告。故事板从未完全理解堆栈视图。约束在运行时是正确的,这一切都很重要。

答案 2 :(得分:3)

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

优势:

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

缺点:

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

<强>步骤:

  • 将每个UILabel嵌入UIView。
  • 根据标签约束UIView的大小(匹配前导,尾随,底部和顶部)

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

enter image description here