【发布时间】:2016-04-30 00:32:28
【问题描述】:
要么我疯了,要么 AutoLayout 直接坏掉了。有人可以向我解释一下吗。我在TableView 中有一个TableViewCell,它跨越了ViewController 的宽度。我在TableViewCell 中放置了 4 个标签。我使用 AutoLayout 创建了约束,使每个标签的宽度为TableViewCell 的 25%。然而,这 4 个标签的宽度明显不同,它们甚至不等于整个单元格宽度的 100%。这是屏幕截图。 (每个标签的水平位置都是模棱两可的,是的,但这不应该有所作为)。为什么它们的宽度不一样?为什么 25% + 25% + 25% + 25% 加起来不是 100%?运行 XCode 7.2 并针对 iOS 9。
【问题讨论】:
-
是否需要宽度限制(优先级为 1000?
-
删除所有约束。尝试这些约束一次选择所有 4 个视图,而不是给出顶部、前导、尾随和等宽约束。
-
“每个标签的水平位置是模棱两可的,是的,但这不应该有所作为” - 不,它确实有所作为。这是 Autolayout 告诉你它必须做出一些猜测来布局你的项目。这些猜测不是你想要的。
-
@Paulw11 当然,它所做的猜测只是视图的水平位置,对吧?我看不出有一个模棱两可的水平位置应该如何影响视图的宽度...... AutoLayout 应该能够在不改变宽度的情况下猜测水平布局,这是明确指定的吧?否则,这意味着“如果您未指定任何 1 个约束,AutoLayout 会将所有其他约束抛出窗口”——这真的是它的工作原理吗?
-
不行,如果它不能解决水平位置,那么它可能也无法解决水平宽度。一般来说,如果你在 IB 中收到这些警告,那么事情就不会顺利。
标签: ios xcode swift uitableview autolayout