当我们在运行时更改模拟器方向时,UIViews会重叠

时间:2015-12-19 10:44:32

标签: ios objective-c iphone uiview autolayout

在我的项目中,我使用自动布局以编程方式添加了两个UIViews

当我点击下方屏幕中的secondView按钮时使用UIView动画我先将UIView推送到secondView UIView,当我点击firstView按钮时,我将从第二个{{1首先UIView

我的问题是,当我在运行时更改模拟器方向时,第二个UIView与第一个UIView重叠。请帮助解决为什么会出现这个问题。

我知道这是一个约束问题,但我们如何解决这个问题?

我的代码: -

UIView

enter image description here

1 个答案:

答案 0 :(得分:0)

您的问题是因为您尝试以两种不同的方式进行布局,这通常(好吧,总是!)是一个坏主意。你有一些自动布局代码,这是一个很好的,绝对是正确的解决方案,但是你会以编程方式尝试计算和设置你的视图的框架,这使与自动布局很好地配合

您的解决方案是修改动画中的约束,以便自动布局始终完全控制它们。您可以创建新约束以反映新的排名(如果您尝试更改multiplier值则需要)或者只是调整您现在拥有的值。

您可能有兴趣知道可以添加竞争的自动布局约束集,然后只启用特定布局所需的那些。您还可以考虑将UI移动到故事板,在那里创建约束,然后为这些约束创建IBOutlet,以便您可以在代码中操作它们。