Textfield的约束与UIButton冲突

时间:2015-07-31 04:42:40

标签: ios objective-c xcode

我仍处于学习约束的学习过程中,所以请耐心等待:

在xCode Interface Builder中,我的UI如下所示:

enter image description here

顶部TextField设置了以下约束:

enter image description here

右侧的反向按钮具有以下约束:

enter image description here

当我在调试器中运行它时,我得到一个配置错误的UI:

enter image description here

这到底发生了什么?为什么我的反向按钮增加到一个巨大的尺寸并移动到一个奇怪的位置,为什么第一个TextField缩小?

理想情况下,我希望我的调试器UI在第一张图像中看起来像我的Interface Builder。我通过界面构建​​器而不是以编程方式设置这一切。

4 个答案:

答案 0 :(得分:1)

如果没有更多信息,我的第一个猜测是图像的内在大小会导致与您在右侧按钮上设置的约束冲突。这很可能导致约束引擎删除您指定的优先级,因为在运行时存在冲突时,它只是半开始随机删除约束,直到没有更多冲突。

你有很多针对superview指定的东西。尽量不要使用superview相对约束,除非你真的指定了对superview的约束,而不是该视图中的其他组件。

始终确保在运行时检查导致冲突被删除的约束冲突的日志消息,因为这几乎总是这样的奇怪布局的原因。

答案 1 :(得分:1)

Top TextField应具有以下内容:

  

超级视图的顶层空间,超前视图的空间,宽度和高度

按钮应如下所示:

  

超级视图的顶部空间,超级视图的尾随空间,宽度和高度

第二个TextField应该如下:

  

顶部空间到顶部TextField,前导空间到superview,相等宽度和相等高度与顶部TextField

答案 2 :(得分:1)

由于您的按钮没有高度和宽度...这可能需要按钮的图像的固有大小,您可能会得到相互矛盾的输出......

这是图像和约束......可能对你有用......

enter image description here

答案 3 :(得分:1)

如果您点击items of note in interface builder

您可以通过进入游戏View Controller的属性检查器,在界面构建器中模拟正在处理的设备。

在界面构建器中模拟您正在使用的设备,并且应确定Ib与模拟器匹配(只要黄色错误指示器未显示在游戏视图控制器标题旁边 - 错误就会说明“。 ......在运行时可能会有所不同“或类似的东西。”

在这种情况下,底部的IB中使用的尺寸通过紧凑来确定约束所适用的设备和方向(横向或描绘)。常规定期是普遍约束。查看我以前的帖子了解更多细节。