Я слышал, что viewDidLayoutSubviews
- это лучшее место для изменения макета, когда мы использовали ограничения.Проблема при использовании viewDidLayoutSubviews
Так что я прыгнул viewDidLayoutSubviews
Я создал три UIViews
и SubViewed
их на SuperView. Я не упоминаю код для расчета фреймов.
[self.view addSubview:imgMiddleCircle];
[self.view addSubview:imgFirstCircle];
[self.view addSubview:imgLastCircle];
Используя этот кусок я добавляю эти круги.
Теперь, когда я запускаю мой код В viewDidLayoutSubviews
я получаю следующие экраны:
И когда я переключаюсь на viewWillLayoutSubviews
я получаю это на экране:
Почему я Я получаю дополнительные два круга в viewDidLayoutSubviews
, даже создаю три круга.
И почему в viewWillLayout
приведен правильный выход.
'viewDidLayoutSubviews' вызывается несколько раз, поэтому вы видите дополнительные виды. Таким образом, это не идеальное место для добавления subviews. Как правило, вы добавляете subviews в 'viewDidLoad', и если вы действительно уверены, что хотите вручную вычислять фреймы, делайте это только в' viewDidLayoutSubviews' – Alladinian
, вы имеете в виду внутреннее 'viewDidLayoutSubviews', называемое несколько раз .... И i не может использовать 'viewDidLoad', поскольку включен автозапуск. Я делаю вычисления на основе существующих элементов управления .. и в 'viewDidLoad'. Я не получаю правильный фрейм для существующих элементов управления. – Dalvik
@RahulMishra установил фрейм в' viewDidLayoutSubviews' и добавил subviews в 'viewDidLoad' –