UIViewController frame - PullRequest
       18

UIViewController frame

1 голос
/ 13 апреля 2011

У меня есть следующие настройки.

pagingScrollViewController с UIScrollView в качестве его представления (self.view = scrollView). В этом scrollView я добавляю представление rootViewController как подпредставление. Представление rootViewController представляет собой UIView, к которому я добавляю одно или другое представление (в зависимости от внутренней логики).

UIScrollView инициализируется с фреймом, равным applicationFrame, поэтому 0, 20, 320, 460. Это хорошо из-за строки состояния вверху.

Проблема возникает при добавлении представления rootViewController в представление прокрутки. В процессе создания rootViewController его вид настраивается в -loadView, который все еще закомментирован в моем случае. Таким образом, стандартное приложение loadView обрабатывается.

Это дает мне представление, которое также имеет рамку 0, 20 , 320, 460. Это не так, как мне хотелось бы видеть, так как теперь представление rootViewController удалено из 40 пикселей. верх фактического экрана iphone.

Теперь это, конечно, легко исправить, вручную установив представление rootViewControllers в -loadView или присвоив ему фрейм, в котором значение y равно 0 в -viewDidLoad;

Но я не могу вообразить, что именно так Apple собиралась это сделать. Я не использую Интерфейсный конструктор, так что, возможно, в этом проблема, Apple намеревается использовать IB, но я упрям ​​в этом вопросе:)

Я использую viewControllers неправильно? Это казалось хорошим способом отделить логику scrollView от логики других представлений.

Каким будет правильный способ добавления представления второго UIViewController к представлению первого UIViewController. В котором первый viewController.view получает кадр 0, 20, 320, 460. И второй контроллер.view просматривает кадр 0, 0, 320, 460 (так что в основном это границы первого controller.view)

Широко используется слово «контроллер» и представление, надеюсь, вопрос ясен.

1 Ответ

1 голос
/ 16 апреля 2011

Чтобы ответить на мой собственный вопрос ...

Равин был прав.Прочитав метод loadView и руководство по программированию контроллера Apple View , я пришел к выводу, что это стандартное поведение системы.Если вам нужно что-то еще, переопределите -loadView и сделайте это самостоятельно.На самом деле Apple заявляет, что если вы не используете NIB, вы ДОЛЖНЫ переопределить -loadView, чтобы создать хотя бы простое простое представление.

...