我听说viewDidLayoutSubviews
是使用约束时更改布局的最佳位置。
所以我跳到viewDidLayoutSubviews
我在SuperView上创建了三个UIViews
和SubViewed
。我没有提到用于帧计算的代码。
[self.view addSubview:imgMiddleCircle];
[self.view addSubview:imgFirstCircle];
[self.view addSubview:imgLastCircle];
使用这一部分,我添加了这些圈子。
现在,当我在
viewDidLayoutSubviews
中运行代码时,出现以下屏幕:当我切换到
viewWillLayoutSubviews
时,我在屏幕上看到了这个:为什么即使我创建了三个圆圈,我在
viewDidLayoutSubviews
中又得到了两个圆圈。以及为什么在
viewWillLayout
中给出正确的输出。 最佳答案
您应该针对viewDidLayoutSubviews
被称为多种类型的事实进行编码。
理想情况下,addSubview:
应该在viewDidLoad
之类的地方发生,您可以确定它仅被调用一次。
您可以创建一个标志以避免调用addSubview:
多种类型(不是我个人的选择)
否则,在进行计算之前,尝试将设置的代码移至viewDidLoad
并强制视图呈现自身:
[yourView setNeedsLayout];
[yourView layoutIfNeeded];
关于ios - 使用viewDidLayoutSubviews时出现问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33145511/