Пользовательский дизайн UIView для iOS: init vs layoutSubviews
У меня есть несколько пользовательских UIViews.
Я постоянно нахожу себя инициализирующим свойства в инициализации моего пользовательского представления, но я также устанавливаю рамку там же.
Я обычно оставляю свой layoutSubviews пустым. Если я не ожидаю, что границы моего вида изменятся, нормально ли устанавливать мои различные кадры подпредставления в самом init, или я должен перенести это в layoutSubviews?
Я хотел бы упомянуть, что одна из причин, по которой я это делаю, заключается в том, что часто мне приходится вычислять фрейм (размер) моего пользовательского представления на основе того, как планируются мои подпредставления.
Я обычно изменяю размер рамки моего пользовательского представления после того, как все размеры моего подвидового окна были установлены.
1 ответ
Вы должны избегать распределения / создания ваших представлений в layoutSubviews
метод, потому что он будет вызываться много раз. Вы можете выделить ваши представления в ваших методах инициализатора и расположить их в layoutSubviews
метод. Но если фреймы ваших представлений не связаны с границами вашего представления, тогда вам не о чем беспокоиться об установке их фреймов в ваших методах инициализатора.