У меня есть подкласс uiscrollview и я использовал initWithCoder для подготовки моего uiscrollview со всеми вложенными представлениями. Я использовал приведенный ниже код для его настройки:
- (id)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super initWithCoder:aDecoder])) {
NSLog(@"%f", self.frame.size.height);
self.contentSize = CGSizeMake(5000, self.frame.size.height);
labelContainerView = [[UIView alloc] init];
labelContainerView.frame = CGRectMake(0, 0, self.contentSize.width, self.contentSize.height/2);
labelContainerView.backgroundColor = [UIColor yellowColor];
[self addSubview:labelContainerView];
}
Но это продолжает терпеть неудачу, потому что свойство self.frame всегда возвращает 0 значений. Для меня очень важно использовать свойство self.frame, потому что я хочу использовать раскадровку для любых регулировок высоты фрейма прокрутки.
Я пробовал то же самое, используя файлы xib вместо раскадровки, и он отлично работает. Но в своем проекте я не хочу использовать файлы xib.
Было бы здорово, если бы кто-нибудь объяснил мне, почему я получаю 0 значений в методе initWithCoder: при использовании раскадровки? и если использовать раскадровку, как этого добиться?
PS: я заметил, что метод layoutSubviews возвращает правильную информацию о кадре, но я не могу создавать здесь свои подпредставления, так как он вызывается при каждом изменении кадра (при прокрутке)