Изменение рамки строки состояния без уведомления

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

Вот как я регистрирую уведомление:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appWillChangeStatusBarFrameNotification:) name:UIApplicationWillChangeStatusBarFrameNotification object:nil]; 

В некоторых местах нашего приложения мы показываем / скрываем строку состояния:

 [[UIApplication sharedApplication] setStatusBarHidden:maximize withAnimation:UIStatusBarAnimationSlide]; 

Но он также может изменять размер, когда включена личная точка доступа или когда вы звоните по телефону. Есть ли способ получить фактическую рамку строки состояния при ее изменении?

Этот вопрос подразумевает, что уведомления не работают из-за ошибки SDK, по крайней мере, для изменений ориентации. Это причина? Есть ли обходной путь?

One Solution collect form web for “Изменение рамки строки состояния без уведомления”

Я знаю, что этот вопрос был опубликован некоторое время назад, но эта проблема раздражает! UIApplicationWillChangeStatusBarFrameNotification и UIApplicationDidChangeStatusBarFrameNotification только изменения ориентации и изменения высоты строки состояния вызова.

Я решил это, написав мою собственную функцию категории setStatusBarHidden, которую я использую вместо обычной функции UIApplication . К сожалению (как указывал @progrmr), поскольку высота строки состояния может составлять 20 пикселей или 40 пикселей (и мы не имеем представления о том, как будет выглядеть рамка скрытой строки состояния до тех пор, пока она не будет скрыта), мы можем только надежно скрыть одно уведомление с правильной пользовательской информацией ( UIApplicationDidChangeStatusBarFrameNotification ). Вот что я сделал:

 @implementation UIApplication (statusBar) - (void)setStatusBarHiddenWithNotification:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation { if (self.statusBarHidden == hidden) return; [self setStatusBarHidden:hidden withAnimation:animation]; [NSNotificationCenter.defaultCenter postNotificationName:UIApplicationDidChangeStatusBarFrameNotification object:nil userInfo:@{UIApplicationStatusBarFrameUserInfoKey: [NSValue valueWithCGRect:self.statusBarFrame]}]; } @end 

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

Надеюсь, это поможет кому-то!

  • Просмотр автоматической настройки при смене приложений с помощью строки состояния, скрытой
  • NavigationBar и StatusBar объединяются после отклонения модального
  • iPhone: строка состояния перемещения HOWTO с жесткой ставкой
  • Как предотвратить UINavigationBar от покрытия верхней части окна в iOS 7?
  • как установить цвет текста строки состояния (кроме белого и черного)
  • Неверное значение для статусаBarOrientation на viewWillAppear
  • Установите строку состояния на черный цвет
  • скрытая строка состояния iOS6
  • Как выполнить блок кода в IOS7 не в IOS6?
  • Apple отклонит приложение, если UIStatusBarForegroundView используется как строка
  • Панель состояния скрытия панели навигации
  • Interesting Posts

    Отформатируйте текст кнопок «Отмена» и «Выбрать» кнопок UIImagePickerController

    UILabel + AutoLayout = ошибка в выравнивании базовой линии

    Получить имя файла изображения, сохраненного в фотоальбоме

    Можно ли получить доступ к метаданным геотаг фотографии из симулятора?

    как объединить два видео с прозрачностью

    WebKit Audio искажается на iOS 6 (iPhone 5) впервые после включения питания

    CNUI ERROR Время ожидания контакта с задержкой

    Как обрабатывать авторотацию в AVCaptureVideoPreviewLayer?

    создание приложения для воспроизведения потокового видео RTSP

    Откройте Mobile Safari без использования openURL: url

    При перетаскивании объекта в столкновение с другим объектом в наборе спрайтов не происходит подпрыгивания

    перезагрузка микрофона в фоновом режиме в iOS

    Пользовательский UIActionSheet для iOS

    Restkit + Magical Record проблема поиска sql-файла

    Попытка представить обновление для приложения в XCode, но я продолжаю получать сообщение об ошибке …

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.