При исчезновении модального вида строка состояния iPhone исчезает? - PullRequest
6 голосов
/ 03 февраля 2010

Я хочу отобразить модальный вид и хочу, чтобы он покрывал строку состояния iPhone.

Я попытался установить для свойства modeFullScreenLayout контроллера модального представления значение YES; Я также установил для родительского свойства значение YES. Это не работает, предположительно, потому что модальное представление отображается ниже содержимого главного окна, которое включает в себя строку состояния.

Мой второй подход отбросил всю технику «wantFullScreenLayout» в пользу того, чтобы скрыть строку состояния непосредственно перед отображением модального представления, а затем снова включить его после закрытия модального представления. Это работает до самого конца ... родительское представление модального представления размещено неправильно (его панель навигации частично скрыта за строкой состояния.) Вызов - [view setNeedsLayout] ничего не делает.

Как мне подойти к этой проблеме?

Спасибо.

Ответы [ 2 ]

12 голосов
/ 28 августа 2011

Позднее присоединяюсь к дискуссии, но думаю, что смогу спасти других от некоторых неприятностей.

У меня есть VC, несколько нажатий в NavController (назовем этот VC РОДИТЕЛЕМ). Теперь я хочу отобразить модальный экран (РЕБЕНОК) со скрытой панелью навигации И статусной строкой. После долгих экспериментов я знаю, что это работает ...

1) Поскольку я представляю ВК РЕБЕНКА, вызывая presentModalViewController:(UIViewController *)modalViewController animated:(BOOL)animated в РОДИТЕЛЕ, панель навигации больше не задействована (не нужно ее скрывать).

2) Размер в кончике CHILD VC имеет размер 320x480.

3) VC CHILD устанавливает self.wantsFullScreenLayout = YES; в viewDidLoad

4) незадолго до представления РЕБЕНКА скрыть строку состояния с помощью [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:YES];

5) закрыть VC CHILD, используя методы протокола делегата в PARENT, и вызвать [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:YES]; до dismissModalViewControllerAnimated:YES], чтобы убедиться, что панель навигации нарисована в правильном месте

Надеюсь, это поможет.

2 голосов
/ 03 февраля 2010

Вам понадобится - (void)setStatusBarHidden:(BOOL)hidden animated:(BOOL)animated в классе UIApplication.

Примерно так:

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];

Это должно скрыть строку состояния с хорошей анимацией затухания.

...