Я пытаюсь отобразить 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 пикселей? Или сообщить ему, что он не должен компенсировать строку состояния?
Если нет, я думаю, мне нужно будет использовать мою первую иерархию, упомянутую выше, и выяснить, как повернуть метку, чтобы она соответствовала вращению панели навигации. Где я могу найти дополнительную информацию о том, как это сделать?
Примечание: "показывая ярлык поверх панели навигации", я имею в виду, что он должен накладываться поверх панели навигации... его нельзя просто обернуть в элемент кнопки "бар" и поставить как один из элементы навигационной панели.