iOS: высота представления неправильно установлена ​​в viewDidLoad - PullRequest
2 голосов
/ 29 января 2011

У меня загружен контроллер представления из пера, где у меня есть представление прокрутки, определенное с высотой 346 пикселей.Однако, когда я делаю:

int h = scrollView.frame.size.height;
NSLog(@"%d",h);

в viewDidLoad, я получаю 375.

Мне нужна правильная высота в viewDidLoad (или другом подобном методе), чтобы я мог программно установить содержимое прокруткипредставление в зависимости от высоты (не нужно, чтобы оно «переполнялось» по вертикали, только по горизонтали, его постраничная подкачка).

В представлении прокрутки включена каждая строка авторазмера.(все ярко-красный).Странно, что при загрузке представления я вижу, что представление прокрутки имеет (правильные) 346 пикселей в высоту, а не 375, поэтому оно должно быть заменено на правильное значение где-то между viewDidLoad и отображением представления.

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

edit: Я решил это, поместив таймер на 0,1 секунды в viewDidLoad, и когда этот таймер был вызван, я выполнил свою работу.нужно сделать.Это что-то вроде хака, поэтому любой другой совет будет высоко ценится.

Ответы [ 2 ]

4 голосов
/ 19 июня 2013

Правильное место для выполнения дополнительных вычислений типа макета обычно находится в viewWillLayoutSubviews или viewDidLayoutSubviews. Документы здесь .Также это из раздела «Обработка поворотов вида»:

Метод viewWillLayoutSubviews также вызывается после изменения размера представления и позиционирования его родителем.Если контроллер представления не виден, когда происходит изменение ориентации, то методы вращения никогда не вызываются.Однако метод viewWillLayoutSubviews вызывается, когда представление становится видимым.

0 голосов
/ 19 июня 2013

Взгляните на эту ссылку .Ваше подпредставление не было размещено и размещено в суперпредставлении.Получите размер вашего представления, например, viewDidAppear:.

...