Было бы круто если бы вы сняли курс про то как правильно создавать no storyboard проекты, views & subviews, controllers & childcontrollers, constrains в коде и вообще в целом рассказать про архитектуру вьюх было бы очень интересно. Так же по RxSwift был бы очень интересный курс
все же не раскрыта причина того, что же приводит к вызову метода layoutSubviews на 6 минуте, и изменения констрейнта указанные в этом методе имеют результат. Ведь размеры , констрейнты не менялись. Почему layoutSubviews вызвался?
При появлении VC одним из методов ЖЦ VC будет вызван метод viewDidLoayoutSubViews, который у своего главного view у всех его сабвьюх будет вызывать метод layoutSubviews(), также этот метод ЖЦ (viewDidLoayoutSubViews) будет срабатывать когда меняются размеры главного view VC, например когда устройство будет перевернуто.
Спасибо за видео, как всегда во время, как раз была проблема с этим! Буду очень благодарен если подскажете как сделать что бы collection view отображал картинку в полный размер с правильным соотношением сторон, не зависимо от ориентации самого изображения
Я правильно поняла, что в UIVIew.animate {} когда мы перемещали centerX, то layoutSubviews вызывался автоматически.Но когда в этом блоке увеличивали констрейнт, layoutSubviews сам по себе не вызывался и поэтому мы писали layoutIfNeeded, чтобы косвенно вызвать layoutSubviews (который в свою очередь высчитывает фреймы на основе констрейнтов)Заранее спасибо за ответ, очень важно понять 🙏🏻
cornerRadius не сработал во viewDidLoad() потому что в него записали ноль. В тот момент ширина квадрата ещё не была высчитана поэтому frame.width вернул 0. Если бы автор ролика передал туда константное значение, то все бы заработало.
@@АлексейПархоменко-х9ы Алексей, добрый день. На 6:15 было сказано, что после работы LayoutSubviews срабатывает метод ViewDidLayoutSubviews во VC. Но когда я сам решил это проверить и переопределил все методы жизненного цикла VC, чтобы они выводили в консоль своё имя при запуске, то метод LayoutSubviews срабатывал уже после ViewDidLayoutSubviews.
@@shurale85 когда мы в данном примере указываем constraints для нашей subview в методе ViewDidLoad, то они применяются для нее не сразу и Frame этой вьюшки соответственно нулевой еще из-за этого. Они гарантированно применятся, когда вызовется метод viewDidLayoutSubviews (это и есть сигнальный метод viewController , который прямо об этом и говорит, что constraints для subviews применились). В данном случае никаких триггеров дополнительных не надо, чтобы запустить этот процесс применения constraints, т.к. указание этих констреинтов в коде и есть сам по себе первоначальный триггер, чтобы была необходимость применить эти ограничения.
Полезное видио 😀
Теперь буду править проект)
ну а за видео спасибо! Как всегда полезное и понятное!
Огромное спасибо за видео!
итоги 16:05
Алексей, Спасибо!
Было бы круто если бы вы сняли курс про то как правильно создавать no storyboard проекты, views & subviews, controllers & childcontrollers, constrains в коде и вообще в целом рассказать про архитектуру вьюх было бы очень интересно.
Так же по RxSwift был бы очень интересный курс
У нас такие технологии разбираются в курсе VK News Feed App, посмотри
13.22-13.44 надо бы рэпом зачитать)))
все же не раскрыта причина того, что же приводит к вызову метода layoutSubviews на 6 минуте, и изменения констрейнта указанные в этом методе имеют результат. Ведь размеры , констрейнты не менялись. Почему layoutSubviews вызвался?
При появлении VC одним из методов ЖЦ VC будет вызван метод viewDidLoayoutSubViews, который у своего главного view у всех его сабвьюх будет вызывать метод layoutSubviews(), также этот метод ЖЦ (viewDidLoayoutSubViews) будет срабатывать когда меняются размеры главного view VC, например когда устройство будет перевернуто.
Спасибо за видео, как всегда во время, как раз была проблема с этим! Буду очень благодарен если подскажете как сделать что бы collection view отображал картинку в полный размер с правильным соотношением сторон, не зависимо от ориентации самого изображения
1) Нужно ли делать [weak self] в блоке animate?
2) зачем два раза писать layoutifneeded?
Алексей Пархоменко можешь сделать видос когда надо, а когда не надо использовать weak self?
Я правильно поняла, что в UIVIew.animate {} когда мы перемещали centerX, то layoutSubviews вызывался автоматически.Но когда в этом блоке увеличивали констрейнт, layoutSubviews сам по себе не вызывался и поэтому мы писали layoutIfNeeded, чтобы косвенно вызвать layoutSubviews (который в свою очередь высчитывает фреймы на основе констрейнтов)Заранее спасибо за ответ, очень важно понять 🙏🏻
cornerRadius не сработал во viewDidLoad() потому что в него записали ноль. В тот момент ширина квадрата ещё не была высчитана поэтому frame.width вернул 0. Если бы автор ролика передал туда константное значение, то все бы заработало.
@@АлексейПархоменко-х9ы Алексей, добрый день. На 6:15 было сказано, что после работы LayoutSubviews срабатывает метод ViewDidLayoutSubviews во VC. Но когда я сам решил это проверить и переопределил все методы жизненного цикла VC, чтобы они выводили в консоль своё имя при запуске, то метод LayoutSubviews срабатывал уже после ViewDidLayoutSubviews.
@@vadim_polovoi а вы не разобралсиь, почему на 6 минуте вызвался layoutSubview (и изменения констрейнтов применились).Что было триггером
@@shurale85 когда мы в данном примере указываем constraints для нашей subview в методе ViewDidLoad, то они применяются для нее не сразу и Frame этой вьюшки соответственно нулевой еще из-за этого. Они гарантированно применятся, когда вызовется метод viewDidLayoutSubviews (это и есть сигнальный метод viewController , который прямо об этом и говорит, что constraints для subviews применились). В данном случае никаких триггеров дополнительных не надо, чтобы запустить этот процесс применения constraints, т.к. указание этих констреинтов в коде и есть сам по себе первоначальный триггер, чтобы была необходимость применить эти ограничения.
@@vadim_polovoi класс, спасибо!
1000 лайков