Определите размер self.view в loadView UIViewController - PullRequest
1 голос
/ 22 марта 2011

У меня есть собственный подкласс UIViewController, и я хочу переопределить метод loadView. Я столкнулся с проблемой, что мне нужен размер self.view, прежде чем он будет добавлен к его родителю (который UIViewControllerWrapperView). Как я могу получить размер UIViewControllerWrapperView, к которому будет добавлен мой view?

Если это не тот метод, который обычно используется, то что я должен сделать, чтобы вручную определить будущий размер моего представления (и не полагаться на автоматическое изменение размера)?

EDIT:

Кроме того, когда это UIViewControllerWrapperView создается и имеет размер?

Ответы [ 4 ]

1 голос
/ 22 марта 2011

Кажется, что то, что я хочу, не возможно с текущими возможностями SDK, кроме, возможно, попытки вычислить пространство на вашем экране самостоятельно.

Я решил свою проблему, установив маски автоматического изменения размеров моих представлений более умным способом.

РЕДАКТИРОВАТЬ: Оказалось, что я могу определить нужный мне размер в -(void)viewWillAppear:(BOOL)animated.

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

Правильный способ обработки размера текущего представления (или контроллера представления) состоит не в том, чтобы беспокоиться об этом, а просто в использовании AutoLayout или (более старого способа) автоматического изменения размера масок для естественного размещения элементов в этом представлении.

В какой-то момент вы, конечно, можете выяснить, каковы ваши собственные размеры, но вы должны попытаться переделать ваш дизайн так, чтобы ваш макет был все относительно.Вместо того, чтобы говорить «моя ширина равна 320, поэтому это подпредставление должно иметь ширину 280 с 20 пикселями на каждой стороне», вы можете использовать AutoLayout, чтобы эффективно сказать: «сделать подпредставление буфером 20 пикселей слева и справа и занимать всю оставшуюся ширину.».и т.д.

0 голосов
/ 23 марта 2012

В соответствии с Руководством по программированию контроллера представления :

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

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

0 голосов
/ 22 марта 2011

Если вы переопределяете метод -loadView вашего контроллера представления, вам нужно создать там всю иерархию представлений.

Редактировать: я ранее предлагал вызвать [super loadView], но я заметил, что в документах говоритсяне делать этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...