在Xcode 7.3中使用UILabels的UIStackView
自从我更新到Xcode 7.3后,我遇到了UIStackView
的问题。 如果我创建一个空项目并且只是在UIStackView
放置两个UILabel
UIStackView
使用默认的拥抱和压缩优先级,它会显示AutoLayout错位信息错误。 它甚至不适用于UIStackView
一个(!) UILabel
,因此优先级无关紧要(我认为,可能存在问题)。
我记得在Xcode之前7.3一切都很好。 我分别检查了两台MacBook Pro,这是同样的问题。
有人知道如何解决它吗?
这是Xcode 7.3中出现的一个错误,因此您可以将其视为他所说的无光泽。
问题
使用UIStackView时,故事板无法计算子视图的内在内容大小
解
如果你讨厌在故事板中看到警告,你可以修改它,如下所示:
您应该为UIStackView
每个子视图执行这些步骤
- 点按子视图的警告
- 点按“更新框架”选项
- 在检查器视图的第四个菜单中选择子视图内在大小的“占位符”
就像那样你不会看到警告,你可以看到是否存在任何歧义
缺点是每次更改子视图时都应该执行此步骤(例如:更改UILabel文本的大小)
希望Apple在下一个版本中修复此错误
忽略警告。 故事板从未完全理解堆栈视图。 约束在运行时是正确的,这一切都很重要。
我有一个不同的技巧来消除警告并使“更新帧”正常工作。
优点:
每次文本更改时都不需要更改占位符值
坏处:
Xcode 8出现时不需要的额外视图
脚步:
- 将每个UILabel嵌入UIView中。
- 根据标签约束UIView的大小(匹配前导,尾随,底部和顶部)
看起来UIStackView(在Xcode 7中)无法理解标签的内在内容大小,但是CAN可以理解视图的内在内容大小 – 所以将标签放在视图中并预先设置!