Я пытаюсь отобразить UILabel поверх UINavigationController. Проблема в том, что когда я добавляю UILabel в качестве подпредставления UIWindow, он не будет автоматически вращаться, поскольку он не является подвидом UIViewController (UIViewController автоматически обрабатывает обновление подпредставлений во время вращения).
Это иерархия, которую я использовал:
- UIWindow
- UILabel
- UINavigationController
Итак, я подумал, что могу использовать следующую иерархию:
- UIWindow
- UIViewController
- UIView
- UILabel
- UINavigationController
- UIView
- UIViewController
Таким образом, метка может отображаться поверх панели UINavigationController, а также автоматически поворачиваться, поскольку она является подвидом UIViewController.
Проблема в том, что когда я пытаюсь добавить UINavigationController как часть представления:
[myViewController.view addSubview:myNavigationController.view];
он появится на 20 пикселей вниз. Я предполагаю, что это потому, что он думает, что ему нужно освободить место для строки состояния. Но поскольку UINavigationController размещается внутри UIView, который не накладывается поверх строки состояния, он неправильно добавляет дополнительные 20 пикселей. Другими словами, верхняя часть UINavigationBar находится на отметке экрана 40 пикселей вместо 20 пикселей.
Есть ли простой способ просто переместить UINavigationController и все его элементы (например, панель навигации, панель инструментов, контроллер корневого представления) на 20 пикселей? Или дать ему понять, что он не должен компенсировать строку состояния?
Если нет, я думаю, мне нужно будет использовать мою первую иерархию, упомянутую выше, и выяснить, как повернуть метку, чтобы она соответствовала повороту панели навигации. Где я могу найти дополнительную информацию о том, как это сделать?
Примечание. Под «отображением метки поверх панели навигации» я подразумеваю, что она должна накладываться поверх панели навигации ... ее нельзя просто обернуть в элемент кнопки панели и поместить как один из элементов Панель навигации.