Добавление UINavigationController как подпредставление UIView

Я пытаюсь отобразить UILabel сверху UINavigationController. Проблема состоит в том, что, когда я добавляю UILabel как подпредставление UIWindow, это не будет автоматически вращаться, так как это не подпредставление UIViewController (UIViewController автоматически обрабатывает подпредставления обновления во время вращений).

Это - иерархия, которую я использовал:

  • UIWindow
    • UILabel
    • UINavigationController

Таким образом, я думал, что мог использовать следующую иерархию:

  • UIWindow
    • UIViewController
      • UIView
        • UILabel
        • UINavigationController

Таким образом, маркировка могла быть отображена сверху панели UINavigationController, также автоматически будучи повернутым, так как это - подпредставление UIViewController.

Проблема - это, когда я пытаюсь добавить UINavigationController как подпредставление представления:

[myViewController.view addSubview:myNavigationController.view];

это появится 20 пикселей вниз. То, которое я предполагаю, - то, потому что это думает, что должно создать место для строки состояния. Но, так как UINavigationController размещается в UIView, который не накладывает сверху строки состояния, он неправильно добавляет дополнительные 20 пикселей. Другими словами, вершина UINavigationBar в метке экрана на 40 пикселей вместо на уровне 20 пикселей.

Там какой-либо простой способ состоит в том, чтобы просто сместить UINavigationController и все его элементы (например, панель навигации, панель инструментов, корневой контроллер представления) выше на 20 пикселей? Или позволять ему знать, что это не должно компенсировать строку состояния?

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

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

13
задан Senseful 26 March 2010 в 21:51
поделиться

1 ответ

Использование этого кода, похоже, работает:

nav.view.frame = CGRectMake(nav.view.frame.origin.x, nav.view.frame.origin.y - 20,
                          nav.view.frame.size.width, nav.view.frame.size.height);

Я сделал это перед добавлением контроллера навигации в качестве подпредставления. Использование [UIApplication sharedApplication] .statusBarFrame вместо жестко запрограммированных 20, вероятно, тоже будет хорошей идеей.

Я не уверен, что это лучший способ сделать это.

18
ответ дан 1 December 2019 в 22:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: