gpt4 book ai didi

ios - 为什么 Autolayout 不能产生一致的结果?

转载 作者:搜寻专家 更新时间:2023-11-01 06:06:10 24 4
gpt4 key购买 nike

要么我疯了,要么 AutoLayout 直接坏了。有人可以向我解释一下吗?我在跨越 ViewController 宽度的 TableView 中有一个 TableViewCell。我在 TableViewCell 中放置了 4 个标签。我使用 AutoLayout 创建了约束,使得每个标签都是 TableViewCell 宽度的 25%。然而,这 4 个标签的宽度明显不同,它们甚至没有达到整个单元格宽度的 100%。这是屏幕截图。 (每个标签的水平位置是模棱两可的,是的,但这应该没有什么区别)。为什么它们的宽度不一样?为什么 25% + 25% + 25% + 25% 加起来不等于 100%?运行 XCode 7.2 并针对 iOS 9。

enter image description here

enter image description here

最佳答案

Error Symbol

这个红色错误符号是 Interface Builder 告诉您它无法解决您的约束。在这种情况下,正如您所说,可能是因为您没有为标签提供 x 位置约束。

自动布局要么可以解决所有约束并获得正确的布局,要么不能,结果将是不确定的。请记住,自动布局是一个基于代数的过程,它通过使用您在约束中提供的已知值来求解未知值。如果您没有提供足够且明确的已知值,则无法求解剩余值的方程式,也无法期望得到正确的结果。解决方案是创建足够的约束以使布局可解。

请注意,从 iOS 9 开始,我建议使用 UIStackView 来保存这些标签。 UIStackView 的存在正是为了消除为这些类型的场景设置手动约束的痛苦。如果您在单元格中使用水平堆栈 View ,您可以将其边缘限制为单元格的边缘,将 4 个标签拖入其中并将其设置为“Fill Equally”。这就是您所需要的!

关于ios - 为什么 Autolayout 不能产生一致的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36949432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com