IOS6 - получение кадра IBoutlet из viewDidLoad возвращает 0

Я работаю над раскадровкой с Autolayout. У меня есть viewController (т.е. myController), и я перетащил в него UIView (т.е. myView). в myController.h я объявил IBOutlet для myView:

@property (weak, nonatomic) IBOutlet UIView *myview;

и позже я связал это с моим пользовательским интерфейсом поверх раскадровки (ctrl + dradding из выходов myController).

Дело в том, что я думал, что смогу увидеть размер myView из метода myController viewDidLoad:

NSLog(@"pag h:%f e w:%f",myView.frame.size.height, myview.frame.size.width);

Но оба этих выхода равны 0. Где я могу ошибаться?


person luca    schedule 26.03.2013    source источник
comment
один раз проверить ваше соединение с IBOutlet?   -  person Balu    schedule 26.03.2013


Ответы (1)


Если вы используете авторазметку, то при viewDidLoad раскладки еще не произошло. Кадры в этот момент по-прежнему равны CGRectZero, когда представления загружаются из раскадровки.

Зарегистрируйте это снова в viewDidAppear: и вы увидите кадр после завершения макета.

person Firoze Lafeer    schedule 26.03.2013
comment
Я помещаю Scrollview внутри myView, предоставляя им точно такой же кадр (на этот раз из метода viewDidAppear:). ScrollView выглядит так, будто он сдвинут вниз на 20 пунктов по оси Y. Как вы думаете, проблема все еще связана с авторазметкой? @Фироз Лафир - person luca; 26.03.2013
comment
Если вы используете autolayout в раскадровке, то вы должны использовать autolayout и для прокрутки. Просто добавьте прокрутку с соответствующими ограничениями. Или подумайте о том, чтобы не использовать автомакет в раскадровке, в зависимости от вашего дизайна. - person Firoze Lafeer; 26.03.2013
comment
Что ты имеешь в виду? stackoverflow.com/questions/15636186/ - person luca; 26.03.2013