Как покрыть также UIStatusBar с помощью UIView, когда я покрываю весь экран с помощью UIView?
Как покрыть также UIStatusBar с помощью UIView, когда я покрываю весь экран с помощью UIView? (Айфон)
Ответы (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];
Наслаждаться!
keyWindow
при запуске приложения, значение может быть нулевым. Лучше использовать [[UIScreen mainScreen] bounds]
, чтобы получить оконную раму.
- person ThomasW; 02.08.2013
Лучшее, что вы можете сделать, это скрыть строку состояния с помощью:
[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]
и показать его снова, когда вам это нужно.
Вы можете в основном removeFromSuperview
в любое время удалить представление.
setStatusBarHidden:withAnimation:
.
- person ThomasW; 31.07.2013
Если вы пытаетесь создать эффект, подобный UIAlertView
, я не думаю, что вы сможете это сделать. Вы можете отправить запрос на улучшение функции в Apple по адресу http://bugreporter.apple.com.
Хорошо, но я сделал эти два изменения. Добавление 1.0 к UIWindowLevel по-прежнему скрывает строку состояния, и я понятия не имею, почему.
self.windowLevel = UIWindowLevelStatusBar+2.0f;
self.userInteractionEnabled = NO;
Установка для свойства userInteractionEnabled строки состояния значения NO гарантирует, что ваши представления прокрутки будут прокручиваться вверх, когда кто-то нажимает на эту строку состояния.