我听说viewDidLayoutSubviews是使用约束时更改布局的最佳位置。

所以我跳到viewDidLayoutSubviews
我在SuperView上创建了三个UIViewsSubViewed。我没有提到用于帧计算的代码。

 [self.view addSubview:imgMiddleCircle];
 [self.view addSubview:imgFirstCircle];
 [self.view addSubview:imgLastCircle];

使用这一部分,我添加了这些圈子。

现在,当我在viewDidLayoutSubviews中运行代码时,出现以下屏幕:

ios - 使用viewDidLayoutSubviews时出现问题-LMLPHP

当我切换到viewWillLayoutSubviews时,我在屏幕上看到了这个:

ios - 使用viewDidLayoutSubviews时出现问题-LMLPHP

为什么即使我创建了三个圆圈,我在viewDidLayoutSubviews中又得到了两个圆圈。

以及为什么在viewWillLayout中给出正确的输出。

最佳答案

您应该针对viewDidLayoutSubviews被称为多种类型的事实进行编码。

理想情况下,addSubview:应该在viewDidLoad之类的地方发生,您可以确定它仅被调用一次。

您可以创建一个标志以避免调用addSubview:多种类型(不是我个人的选择)

否则,在进行计算之前,尝试将设置的代码移至viewDidLoad并强制视图呈现自身:

[yourView setNeedsLayout];

[yourView layoutIfNeeded];

关于ios - 使用viewDidLayoutSubviews时出现问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33145511/

10-10 20:39