UIView, загруженный из xib как подпредставление: Как правильно установить кадр / размер? - PullRequest
0 голосов
/ 12 июня 2011

У меня небольшая проблема с моим приложением для iphone (я новичок в программировании на iphone, даже если раньше я уже делал target-c).

У меня есть UIView с именем centerView в моем главном окне. Я создал одноэлементный подкласс UIViewController (назовем его FooViewController), связанный с файлом XIB. Моя цель - загрузить связанный вид как подпредставление (centerView, используя весь кадр centerView).

Проблема: представление, управляемое FooViewController, не использует фрейм своего суперпредставления.

Я пытался добавить:

  • self.view.frame = self.view.superview.frame в части "пользовательской инициализации" метода initWithNib ... FooViewController

  • [[[FooViewController sharedController] view] setFrame:centerView.frame] когда я добавляю вид в центр ([centerView addSubView:[[FooViewController sharedController] view]]) (я пробовал до и после этой строки)

Но я не могу получить хорошее поведение (то есть хорошего размера). Есть много вопросов, связанных с такого рода проблемами, но я не смог найти в них свой ответ так:

  • Вы знаете, как я могу это решить?
  • [опционально] Как работал экземпляр UIViewController, связанный с XIB? Должен быть файл ресурсов, где указано имя xib? Или, может быть, он ищет xib с тем же именем, что и класс?

Заранее спасибо за помощь.

1 Ответ

1 голос
/ 12 июня 2011

При загрузке из NIB представление загружается в методе loadView контроллера представления, а не в инициализаторе. Так как вы не должны переопределять loadView, особенно если вы загружаете его из NIB, попробуйте выполнить # 1 (self.view.frame = self.view.superview.frame) в методе viewDidLoad контроллера представления. Конечно, вы должны убедиться, что представление добавляется в суперпредставление к тому времени, когда вы выполняете этот оператор. Вы также должны убедиться, что кадр суперпредставления был правильно установлен к этому времени.

Еще одно место, где вы можете попробовать это, - метод viewWillAppear:. Скорее всего, суперобзор вашего представления будет настроен правильно.

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