2010-02-02 1 views
6

Я хочу показать модальный вид и хочу, чтобы он отображал строку состояния iPhone.Сделать панель состояния iPhone исчезающей при отображении модального вида?

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

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

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

Спасибо.

ответ

2

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

Что-то вроде этого:

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

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

+0

Я уже пробовал это (см. Второй подход выше). У меня нет проблемы с тем, чтобы строка состояния скрывалась и снова появлялась; проблема заключается в правильном оформлении вида, как только я заставлю его снова появиться. Благодарю. –

+0

Просто изменить размер представления? Установите его раму на (0,20,320,460)? – Jasarien

+0

Это сработало! Все еще не совсем уверен, почему я должен установить это вручную ... но спасибо! –

12

Слишком поздно вступать в дискуссию, но я думаю, что могу спасти другие проблемы.

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

1) Поскольку я представляю CHILD VC, вызывая presentModalViewController:(UIViewController *)modalViewController animated:(BOOL)animated в PARENT, навигационная панель больше не задействована (не нужно ее скрыть).

2) Вид в ремешке для детей размером 320x480.

3) Ребенок VC устанавливает self.wantsFullScreenLayout = YES; в viewDidLoad

4) как раз перед представлением ребенка, скрыть строку состояния с [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:YES];

5) распускать РЕБЕНОК VC использование методов протокола делегата в родительском, и позвоните по телефону [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:YES]; до dismissModalViewControllerAnimated:YES], чтобы убедиться, что навигационная панель выполнена в нужном месте.

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

+0

+1 для 4). Я решил это без других шагов, хотя и снова отобразил строку состояния в -viewWillDisappear: в модальном представлении. –

+0

Работает блестяще для меня! – Chris

+2

относительно шага 4, подпись метода - '- (void) setStatusBarHidden: (BOOL) hidden withAnimation: (UIStatusBarAnimation) анимация'. вы отправили второй аргумент BOOL вместо UIStatusBarAnimation. –

 Смежные вопросы

  • Нет связанных вопросов^_^