AutoLayout 奇怪的行为 iOS
Posted
技术标签:
【中文标题】AutoLayout 奇怪的行为 iOS【英文标题】:AutoLayout weird behaviour iOS 【发布时间】:2016-12-27 22:13:57 【问题描述】:当我推到UIViewControllerB
,然后弹回到UIViewControllerA
时,UIViewControllerA
的整个视图应该高出大约 20 像素,然后(我猜在 viewDidAppear
之后)它会移动到它的正常位置。在此期间,我不会以任何方式操纵约束或UINavigationBar
设置。我确实拥有UIViewControllerA
顶部空间到顶部布局指南的所有元素。什么可能导致这种情况?我已经使用了一些故事板,但从未遇到过这样的事情。
【问题讨论】:
嗯,状态栏是20px。状态栏会隐藏吗? 不,什么都没有改变,什么都没有 你能提供你的约束的细节吗? 当顶部约束到顶部布局指南时,UIViewControllers
之间的转换有时会出错,出现的视图似乎会跳起来。我设法通过将顶部约束添加到superview
而不是顶部布局指南来修复我的问题(但是我没有使用UINavigationBar
,所以它对我有用)。我从来没有弄清楚问题的原因!
【参考方案1】:
尝试在您的viewDidLoad
或viewDidAppear
中添加view.layoutIfNeeded()
。
【讨论】:
【参考方案2】:最新的 XCode 添加了一些新行为。尝试设置UIViewControllerA
的约束,使顶部与UINavigationBar
的底部齐平。
【讨论】:
【参考方案3】:这是由于删除子视图引起的,我在加载数据时添加到封面屏幕:删除此子视图后,约束更改(这仅发生在此 UIViewController
上,其他 UIViewControllers
与此子视图很好) .我已经通过这样做修复了它:
self.stopLoading() //removes subview
self.view.layoutIfNeeded()
【讨论】:
以上是关于AutoLayout 奇怪的行为 iOS的主要内容,如果未能解决你的问题,请参考以下文章
使用Xcode 6中的AutoLayout约束模拟方面适合行为
如果为目标视图指定了初始帧,为啥 AutoLayout 不遵守约束?