Нужно либо установить строку состояния в сплошной цвет, либо добавить подпредставление в строку состояния

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

Я хотел бы сделать одно из следующего:

  1. Сделайте строку состояния сплошным цветом. Это не будет отображать содержимое строки состояния, это будет буквально цвет.

  2. Добавьте подпредставление в строку состояния, чтобы я мог охватить весь его "статусный" контент. Это подпредставление будет просто сплошным цветом UIView.

Это позволило бы мне иметь полноразмерную "панель навигации" вверху, без необходимости отображать содержимое строки состояния.

РЕДАКТИРОВАТЬ:

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

UIWindow *statusWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0, 0, 320, 20)];
statusWindow.windowLevel = UIWindowLevelStatusBar + 1;
statusWindow.hidden = NO;
statusWindow.backgroundColor = [UIColor redColor];
[statusWindow makeKeyAndVisible];

Я не могу заставить это работать. Я должен скрывать строку состояния или показывать ее? Я пытался скрыть и показать его с помощью кода выше и мой красный цвет UIWindow никогда не отображается на экране.

2 ответа

Решение

Я наконец-то понял. Этот код работает отлично:

self.statusWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0, 0, 320, 20)];
self.statusWindow.windowLevel = UIWindowLevelStatusBar + 1;
self.statusWindow.hidden = NO;
self.statusWindow.backgroundColor = [UIColor redColor];
[self.statusWindow makeKeyAndVisible];

Ключ, statusWindow не может быть просто локальной переменной. Это должно быть фактическое свойство, иначе оно освобождается из памяти.

Кроме того, что это стоит, мне даже не нужно звонить makeKeyAndVisible чтобы это появилось.

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

Другие вопросы по тегам