自动布局约束已应用但不工作

Posted

技术标签:

【中文标题】自动布局约束已应用但不工作【英文标题】:AutoLayout Constraints Applied but not working 【发布时间】:2017-06-23 02:15:52 【问题描述】:

我是 ios 编程新手,似乎很难处理约束。我在视图中添加了textfield,并尝试将其定位在我将其放置在视图上的位置。我使用情节提要右下角的“添加新约束”按钮添加了一些约束,但是当我在模拟器上运行它时,textfield 位置仍然关闭。有人能帮助我吗?

更新: 我尝试添加这些约束,但仍然没有运气

【问题讨论】:

你应该在 iPhone 7 plus 模拟器上运行它。 @SourLeangChhean 在 iphone 7 模拟器上运行它是否有特殊原因。我拥有一个 5 并在该设备上测试应用程序 1.你也在你的代码中做任何事情吗? 2. 你的第一张图片:你能不能再截一张图,同时展开左窗格,这样我们就可以完整地看到约束了?现在我们只看到了一半? 1.对于右下角的约束。你确定这是在 textField 上设置的吗?!似乎它被设置在 tabBar 项目上。 2.您也可以使用Xcode's visual debugger 非常感谢您的帮助。调试器似乎是一个非常宝贵的工具。 【参考方案1】:

因此,出于某种奇怪的原因,在我将“视图为:”选项从 iPad 更改为 iPhone 后,它开始工作。这不是一个合适的解决方案,但我只是暂时使用它。

【讨论】:

它不能在 iPhone 模拟器中工作,但在 iPad 模拟器中看起来不错的原因是由于底部约束。当在 iPhone 屏幕上应用那个巨大的距离时,该场被推离屏幕。为了证明这一点,请删除您拥有的所有约束,然后简单地添加 Center Horizo​​ntally 和 Center Vertically 约束。重置您的高度和宽度限制。无论使用何种模拟器,该字段都会出现。 @MartinMuldoon 我试过这样做,但它仍然很奇怪,没有出现在我想要的地方。请参阅上面的更新问题。知道我做错了什么吗? @MartinMuldoon 仍然没有运气。检查上面的屏幕截图。【参考方案2】:

您需要右键单击情节提要中的按钮并将约束线拖动到相关组件。然后对其进行编辑。 demo

您也可以通过代码添加约束,例如 vfl 或 masonry。

【讨论】:

【参考方案3】:

auto layout 中的每个视图都需要计算 position(x,y)size(height, width),以便我们必须为该特定视图添加约束

例如:

mytextField 我想将它与视图顶部对齐,距视图顶部 10 像素,左、右 10 像素,高度为 100 像素

提供约束,例如将文本文件放在视图中并添加顶部约束并设置值 10,添加前导约束集 10,添加惊险约束 设置为 10,最后添加高度约束 100

然后文本字段将在视图顶部与任何设备上所需的框架对齐。

【讨论】:

@AhteshamKhan 你能解释一下你想在哪里放置文本框吗?它在下一个按钮旁边吗?【参考方案4】:

您正在使用“水平中心和垂直中心”约束,当您在其他设备上运行应用程序而不是用于设计的设备时,TexField 将位于不同的位置,因为该屏幕上的垂直中心和水平中心将不同.

用户顶部、底部、尾随和前导约束来实现这一点。

【讨论】:

以上是关于自动布局约束已应用但不工作的主要内容,如果未能解决你的问题,请参考以下文章

自动旋转时自动布局约束更新

自动布局约束如何与 SwiftUI 框架一起使用 [重复]

iOS - 具有自动布局的依赖约束控制台输出

需要实现自动布局约束和 SizeClasses?

Xcode 6 中已开发应用程序中的自动布局实现

自动布局约束在生产中引发异常