Как сделать UIView, который может охватывать панель навигации?

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

Как я могу это сделать?

Ответы

Ответ 1

Пострадав немного, чтобы полностью понять этот вопрос, но я думаю, вы спрашиваете, как вы можете отобразить UIView над другим видом (так что представление с элементами управления навигации полностью скрыто во втором представлении)?

UIViewController имеет:

- (void)presentModalViewController:(UIViewController *)modalViewController animated:(BOOL)animated

Было бы разумно, чтобы ваше второе представление управлялось с помощью UIViewController. Для примера предположим, что ваше представление с помощью панели навигации управляется UINavigationViewController, а вид, который вы хотите отобразить, управляется otherViewController...

[navigationViewController presentModalViewController:otherViewController animated:YES];

Ответ 2

Я верю, что он спрашивал, как сделать UIView обложкой всего экрана (вроде как пользовательский всплывающий). Именно так я и оказался здесь. Поэтому я предлагаю свое решение. Вызовите эту функцию где угодно.

[self.navigationController.view addSubview:yourUIView];

Здесь представленное вами представление охватывает весь экран в отличие от

[self.view addSubview:yourUIView]; 

Таким образом, панель навигации не обнаружена.

Ответ 3

Добавьте представление в свой основной экземпляр UIWindow непосредственно в виде подвью.

Ответ 4

Я знаю, что OP искал способ полностью охватить навигационную панель, но вместо того, чтобы покрывать ее, вы могли бы просто скрыть ее. После скрытия вы можете добавить представление в качестве подвид и изменить его фрейм или ограничения, чтобы он занимал весь экран.

- (void)showViewOverNavBar:(UIView *)view {

    [self.navigationController setNavigationBarHidden:YES];
    [self.view addSubview:view];
}