Как покрыть также UIStatusBar с помощью UIView, когда я покрываю весь экран с помощью UIView? (Айфон)

Как покрыть также UIStatusBar с помощью UIView, когда я покрываю весь экран с помощью UIView?


person Shay    schedule 17.01.2010    source источник


Ответы (4)


Я тоже долго ломал голову над тем, как это сделать! Наконец-то разобрался :) Ключ в том, чтобы установить windowLevel вашего нового окна на очень высокий уровень, чтобы оно располагалось поверх всех остальных окон/представлений/панели состояния и т. д.:

UIWindow *keyWin = [UIApplication sharedApplication].keyWindow;
UIWindow *hudWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0.0f, 0.0f, keyWin.frame.size.width, keyWin.frame.size.height)];
hudWindow.backgroundColor = [UIColor blackColor];
hudWindow.alpha = 0.60;
[hudWindow setWindowLevel:10000.0f];
[hudWindow setHidden:NO];

Наслаждаться!

person Sahil    schedule 19.04.2010
comment
Я копнул немного дальше и обнаружил, что свойство windowLevel имеет некоторые константы, представляющие определенные уровни: const UIWindowLevel UIWindowLevelNormal; константа UIWindowLevel UIWindowLevelAlert; константа UIWindowLevel UIWindowLevelStatusBar; Я обнаружил, что UIWindowLevelStatusBar делает свое дело. - person Sahil; 20.04.2010
comment
Обратите внимание, что если вы вызываете keyWindow при запуске приложения, значение может быть нулевым. Лучше использовать [[UIScreen mainScreen] bounds], чтобы получить оконную раму. - person ThomasW; 02.08.2013
comment
Это не работает, когда клавиатура находится на экране. - person Rafa de King; 25.03.2014

Лучшее, что вы можете сделать, это скрыть строку состояния с помощью:

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

и показать его снова, когда вам это нужно.

Вы можете в основном removeFromSuperview в любое время удалить представление.

person David Sowsy    schedule 18.01.2010
comment
Этот API устарел. Замена setStatusBarHidden:withAnimation:. - person ThomasW; 31.07.2013

Если вы пытаетесь создать эффект, подобный UIAlertView, я не думаю, что вы сможете это сделать. Вы можете отправить запрос на улучшение функции в Apple по адресу http://bugreporter.apple.com.

person Alex Reynolds    schedule 17.01.2010
comment
это выполнимо, просто используйте UIWindow. Я добавил ответ с помощью метода, который я использую. - person Sahil; 25.04.2010

Хорошо, но я сделал эти два изменения. Добавление 1.0 к UIWindowLevel по-прежнему скрывает строку состояния, и я понятия не имею, почему.

self.windowLevel = UIWindowLevelStatusBar+2.0f;

self.userInteractionEnabled = NO;

Установка для свойства userInteractionEnabled строки состояния значения NO гарантирует, что ваши представления прокрутки будут прокручиваться вверх, когда кто-то нажимает на эту строку состояния.

person Mugunth    schedule 25.08.2010