自动布局防止按钮移动

Posted

技术标签:

【中文标题】自动布局防止按钮移动【英文标题】:autolayout preventing button from moving 【发布时间】:2015-07-15 03:46:18 【问题描述】:

我发布了一个问题,想知道为什么我的 UIImages 与界面构建器中的位置相同,尽管我添加了

    self.non_image1_outlet.center = CGPoint(x: 211, y: 10)
    self.med_image2_outlet.center = CGPoint(x: 244, y: 10)
    self.image3_outlet.center = CGPoint(x: 277, y: 10)

我现在已经从使用图像切换到按钮。我的问题是,无论我在上面的代码中放置什么 CGPoint,按钮总是会回到与界面构建器中相同的位置。我没有得到我想要的位置。我希望其他按钮在其中一个被按下时移动到其他地方,但是自动布局再次阻止了这种情况。按钮快速移动到所述位置,但“快速”回到放置在界面构建器中的原始位置。

由于缺少代码,我被否决了,但我发现这不是代码问题,而是自动布局。从文件检查器中禁用它,按钮移动到我想要它去的地方。然而,禁用自动布局搞砸了我的整个主 UI,并造成了巨大的混乱。无论如何要禁用特定元素而不是整个项目的自动布局?按钮没有到达指定 CGPoint 的原因是由于自动布局将其锁定在适当的位置,尽管我没有对其施加任何限制。

编辑:或者只是能够将 UIButton 移动到我希望它去的位置,自动布局处于活动状态。

【问题讨论】:

它不会阻止你移动任何东西。你只是没有移动任何东西。如果你用螺栓固定某个东西,无论你如何用力推它,它都不会移动。 【参考方案1】:

您对centerframe 所做的任何更改都将在自动布局引擎下一次通过时重置。

要移动按钮,您需要:

通过更新按钮布局约束的 constant 值来移动按钮 移除布局约束并手动设置按钮位置

【讨论】:

就是这样,按钮最初没有任何限制,但由于自动布局,它仍然锁定到位。谢谢你的意见,我很感激。我已经找了一段时间了。从一个地方移动到另一个地方只是一个简单的按钮。完全没有约束。只需将其放置在自定义单元格中即可。 @RandomDude,有限制。如果您没有为使用自动布局的 NIB 中的视图设置约束,Xcode 将在构建时添加它们。它会在该视图的尺寸检查器上告诉您这一点。因此,您真的想自己设置约束,因为从长远来看,自动生成的约束可能不会满足您的要求。当你使用自动布局时,你真的需要进入它。你不能只是任其发展,然后寄希望于最好的结果。 感谢您的意见。我很感激!我有点“顺其自然”,因为当时我并不担心由于添加内容和功能而受到的限制。【参考方案2】:

我通过重新添加适当的约束解决了这个问题。现在一切似乎都很好。

如果您遇到与我相同的问题,我建议您清除所有当前约束并慢慢添加适当的约束之一。顶部、左侧、右侧和底部边距,以及与任何其他元素的间距。

【讨论】:

以上是关于自动布局防止按钮移动的主要内容,如果未能解决你的问题,请参考以下文章

如何使用按钮动画实现自动布局

使用自动布局时在 Y 轴上移动 UIButton

按下按钮时自动布局展开标签

自动布局降低某些视图的高度

垂直布局组自动扩展

随着窗口变小,OSX 自动布局无法重绘某些控件