UIView不会立即出现

时间:2016-01-03 06:05:23

标签: ios swift uiview autolayout frame

我在我的某个方法中创建UIView并完成将其添加到视图中的所有步骤:

background1 = UIView(frame: CGRectInset(other.frame, -thickness, -thickness))
background1!.backgroundColor = aColor   
background1!.hidden = false
container.addSubview(background1!)

这包含在我在viewDidAppear()中调用的方法中。一般来说,一切都很完美。但是,在第一次打开应用程序时,此视图会显着出现。

我可以告诉您,在上述代码之前和之后设置断点时,background1在执行代码后不会立即出现在屏幕上,即使在任何我能够设置的地方也是如此断点。

我没有对视图做任何其他事情 - 由于某种原因,加载会花费很多令人烦恼的时间。

我有一个非常复杂的(通过> 114评论here)布局设置,它是AutoLayout和部分程序化的部分,因此如果可能的话,我希望单独解决这个问题,撕掉其他一切。

我知道viewDidAppear()当然在视图出现后被称为 ,这意味着执行的代码应该生效,但是从我所知道的,background1甚至没有出现在那一点上。

此外,正如您在我发布的代码的第一行中看到的那样,background1' s frame依赖于other的另一个子视图。此视图的框架由AutoLayout确定。 From what I understand,只保证在调用frame后报告正确的viewDidLayoutSubviews()。 (顺便提一下,这甚至在viewDidLoad()之后调用。)

我知道我已经通过混合AutoLayout和程序化布局犯了一个错误,但我希望有一种方法来挽救这一点。事实上,我确实记得,在以前版本的时候几乎完全相同的设置工作。 (回过头来看,我无法找到它。)

要明确,我想我是否有办法在代码执行时强制UIView出现。我已经试着打电话给父母layoutSubviews(),但这似乎没有用。

谢谢。

0 个答案:

没有答案