Я в основном работал с раскадровкой, пока недавно не перешел к созданию только контроллера с кодом.
Я следовал нашему стандарту кодирования, чтобы создать некоторое подпредставление в функции loadView()
, внутри которой первая строкаsuper.loadView()
.
Из того, что я заметил, после того, как я позвонил super.loadView()
, фрейм self.view
уже установлен правильно с самим viewController, который в точности является фреймом viewController.
Мои коллеги с большим опытом говорят, что в прежние времена это на 100% не работало, что вместо этого должно было бы дать вам CGRectZero
, и, вероятно, я не должен на это полагаться.
Я хочу услышать больше предложений от другихpeople.
Вот мой пример настройки проекта: 1. создать простой проект 2. добавить кнопку в первый VC 3. создать второй VC по коду, переопределить функцию loadView()
во втором VC, вызвать super.loadView()
там и напечатайте self.view.bounds
следующую строку 4. self.present
или используйте навигационный контроллер из VC1 в действии кнопки, чтобы представить или нажать VC2 5. это всегда дает мне правильную рамкуe второго ВК.
Пожалуйста, дайте мне знать.
----------- Редактировать -------------
Чтобы прояснить мой вопрос, я знаю функции жизненного цикла, такие как viewDidLayoutSubviews
или layoutSubViews
, чтобы вернуть правильный вид.Я НЕ спрашиваю об этом.
Мой вопрос: почему loadView()
IS возвращает мне кадр ПРАВИЛЬНЫЙ .