В зависимости от того, какие действия вам нужно выполнить, существует несколько приемов:
-(id)initWithFrame:(CGRect)frame
- назначенный инициализатор UIView; всегда отправляется в UIView для его инициализации, если только представление не загружается из пера;
-(id)initWithCoder:(NSCoder *)coder
- всегда отправляется для инициализации UIView всякий раз, когда представление загружается из пера;
-(void)awakeFromNib
- отправляется после того, как все объекты в пике инициализированы и подключены; применимо, только если вы загружаете объект из пера; вы должны позвонить супер;
-(void)willMoveToSuperview:(UIView *)newSuperview
- отправляется непосредственно перед добавлением представления в качестве подпредставления к другому представлению; newSuperview
может быть нулевым, когда вы удаляете представление из его супервизора;
-(void)willMoveToWindow:(UIWindow *)newWindow
- отправляется непосредственно перед добавлением представления (или его супервизора) в окно; newWindow
может быть нулевым, когда вы убираете вид из окна;
-(void)didMoveToSuperview
- отправляется сразу после того, как представление вставлено в иерархию представлений;
-(void)didMoveToWindow
- отправляется сразу после того, как представление получает набор свойств окна. -
В принципе, вы можете выполнять свои действия во время инициализации (1 и 2), после загрузки из пера (3), перед вставкой в иерархию представлений (4 и 5) и после этого (6 и 7).
-(void)willMoveToSuperview:(UIView *)newSuperview
было лекарством от всех моих проблем, большое вам спасибо!