it-swarm.com.ru

При скрытии строки состояния моя панель навигации перемещается вверх в iOS 7

Я пытаюсь скрыть строку состояния, но поддерживаю "большую" высоту панели навигации. Прямо сейчас, когда я скрываю строку состояния, устанавливая - (BOOL)prefersStatusBarHidden в YES и затем вызывая [self setNeedsStatusBarAppearanceUpdate];. Проблема в том, что панель навигации будет скользить вверх и не оставит места для уведомления, которое я пытаюсь показать. Просто добавить вид поверх строки состояния не вариант, наша строка состояния/навигация имеет эффект причудливого размытия. Кто-нибудь знает, как сохранить стандартную высоту панели навигации с высотой строки состояния и удалить строку состояния из этого?

Редактировать; в итоге я рискнул и получил UIWindow в строке состояния через частный API и компенсировал это.

Редактировать 2; Приложение было одобрено с помощью частного API. Будьте осторожны, хотя! 

32
Tim Wachter

Вы можете создать собственный UIView с его рамкой как 

customView.frame=CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.height);

Также скрыть строку состояния, выполнив следующие действия 

Перейти к info.plist и добавить два атрибута, если не присутствует. установите «Строка состояния изначально скрыта» на YES и установите UIViewControllerBasedStatusBarAppearance на NO. Это скроет строку состояния вашего приложения.

3
Rahul Mathur

Добавьте этот код в вашем контроллере представления:

if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)])
{
    self.edgesForExtendedLayout = UIRectEdgeNone;
}
2
Tushar

Я должен был сделать это один раз. Я закончил тем, что создал собственную панель навигации, а затем просто установил фрейм следующим образом:

navBar.frame=CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.height);

Это сработало для меня в то время. Просто попробуйте.

1
Geet

Вы должны использовать positionForBar: МЕТОД UIBarPositioningDelegate Protocol.

Я не хочу ставить другой ответ или копию/прошлое, поэтому вы должны внимательно посмотреть на следующий вопрос\ответы. :)

Строка состояния iOS 7 сталкивается с панелью навигации
iOS 7 UIToolBar перекрывает строку состояния
Статус перекрывающегося контента в iOS7

1
iPatel

Другой обходной путь здесь: метод переопределения подкласса UINavigationController:

- (void)viewWillLayoutSubviews
{
    [super viewWillLayoutSubviews];
    if (self.navigationBar.frameMinY < 1) {
        self.navigationBar.frameHeight = 64;
    } else {
        self.navigationBar.frameHeight = 44;
    }
}

в котором установлен frameMinY установлен frame.Origin.y и установлен frameHeight установлен frame.size.height

0
dopcn