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