Я создал подкласс UIView
и назвал его MSMobileControlView
. Я добавил объект UIView
в свою раскадровку с поддержкой Autolayout и присвоил его классу MSMobileControlView
.UIView имеет нулевую ширину и высоту, хотя это видно
Внутри MSMobileControlView
У меня есть этот код:
-(void)didMoveToSuperview
{
NSLog(@"self.frame: %@", NSStringFromCGRect(self.frame));
UIBUtton *levelButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[levelButton setFrame:CGRectMake(0, 0, 150, 40)];
[levelButton setTitle:@"Next Level" forState:UIControlStateNormal];
[self addSubview:levelButton];
}
NSLog
результат:
self.frame: {{0, 0}, {0, 0}}
Однако я до сих пор можно увидеть вид на экране и кнопка реагирует на краны, как и ожидалось. У меня нет другого кода, связанного с MSMobileControlView
. Что происходит?
Спасибо за подсказку: да, 'viewDidLayoutSubviews' работает. Есть ли делегат, который выполняется в классе UIView, когда это происходит? –
Нет делегатов. Просто переопределите и вызовите супер, где это необходимо. Убедитесь, что вы установили ограничения в updateConstraints (для представлений) и установите для translatesAutoResizingIntoConstraints значение NO для любых программно созданных представлений –