Где разместить код для изменения свойств UIView - PullRequest
1 голос
/ 25 марта 2011

Если я создаю UIView программным способом и я хочу изменить свойства UIView (например, фон или на самом деле возиться с CALayers), должен ли я размещать код вне UIView, например в контроллере View? Можно ли разместить код где-нибудь внутри UIView?

Я проверял пример CoreAnimationKioskStyleMenu, его код находится внутри UIView, но он загружен из Nib и может быть помещен в awakeFromNib, поэтому он, похоже, не применим к моему случаю.

Ответы [ 2 ]

1 голос
/ 25 марта 2011

На самом деле есть несколько методов, где вы можете разместить код инициализации / настройки.

  • (void) willMoveToSuperview: (UIView *) newSuperview;
  • (void) didMoveToSuperview;

будет вызван, как только вы добавите представление в качестве подпредставления к другому представлению, после чего у вас уже есть рамка и все свойства, и вы можете выполнять дальнейшую настройку по своему усмотрению.

  • (void) layoutSubviews - обычно используется для изменения фреймов подпредставлений и организации макета.Будет вызываться каждый раз, когда система должна перерисовывать представление, или когда вы специально вызываете [self setNeedsLayout] в вашем UIView.

Надеюсь, это поможет.

1 голос
/ 25 марта 2011

Это зависит. Очевидно, что хороший способ справиться с этим - использовать файл xib, так как он предназначен для хранения таких данных, но это не всегда лучший ответ для каждой ситуации.

Если представление предназначено для повторного использования (например, кнопки или какого-либо виджета) во всем приложении, лучше всего хранить все эти настройки в подклассе UIView.

Если это один увеличенный вид, который всегда будет управляться UIViewController, вы можете сохранить некоторую информацию в UIViewController. Тем не менее, если вы в конечном итоге создадите подкласс UIView, вероятно, лучше всего хранить данные в UIView.

Как общее примечание, я считаю, что стоит потратить ваше время на то, чтобы поместить как можно больше этих данных в xib с помощью конструктора интерфейсов. Магические значения (например, цвета или размеры), пронизывающие ваш код, всегда будут проблемой, если вы захотите изменить его. Я обнаружил, что модифицировать xib намного проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...