Подтвердить что ты не робот

Как установить верхнее положение = 0 после setStatusBarHidden: Да?

Я обнаружил, что после установки

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

at viewDidLoad, тогда, если я хочу выровнять изображение сверху, мне нужно будет установить его позицию как .y = -20;

В любом случае, чтобы координата y верхнего положения была равна 0? или он обречен быть -20 после того, как он отклонил строку состояния?

Спасибо за чтение.

4b9b3361

Ответ 1

У меня была аналогичная проблема в одной точке, и этот бит кода исправил это для меня:

[viewController.view setFrame: [viewController.view bounds]];

Ответ 2

Решение Джастина Галлахера почти правильно, но имеет один главный побочный эффект.

Скрытие строки состояния, а затем установка рамки представления на собственные границы будет работать в текущей ориентации. Но вращение будет уродливым. Если вы находитесь на портрете, например, поворот устройства в альбомный режим приведет к смещению всего кадра изображения вправо на 256 точек, оставив на экране большое черное пространство.

Решение bmoeskau (к другому побочному эффекту) в комментариях выше позволяет избежать этой проблемы:

[self.view setFrame: [[UIScreen mainScreen] bounds]];

Ответ 3

Я предполагаю, что вы должны добавить элемент UIStatusBarHidden в Info.plist, если хотите, чтобы строка состояния была удалена с начала.

[email protected]

Вы также можете посмотреть, как настроить автоматизацию для изменения вертикальной (и горизонтальной)

См. ниже Добавить текстовый вид здесь, например, о том, что нажать в InterfaceBuilder

Цитата:

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

Ответ 4

Убедитесь, что размер корневого представления в вашем нибе правильно установлен на 480x320. Некоторые из проектов шаблонов создают их на уровне 460x320 для учета строки состояния. Если вы загружаете представление, отображающее полный экран, а строка состояния скрыта, он должен работать, и вам не нужно ничего делать вообще.

Ответ 5

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

[self.view setFrame: [self.view bounds]];
[self.theScroller setFrame: [self.view bounds]];

"theScroller" - это имя моего прокрутки.

Ответ 6

Следующее решение работает правильно

  • на iOS 6 и iOS 7,
  • для скрытия и отображения строки состояния,
  • с ориентацией на портрет и пейзаж, и
  • даже при видимой строке состояния вызова

В вашем контроллере просмотра добавьте следующее:

- (BOOL)prefersStatusBarHidden  // For iOS 7.0 or above.
{
    return _isStatusBarHidden;
}

// Call this method to show / hide the status bar and resize the view.
- (void)setStatusBarHidden:(BOOL)isStatusBarHidden
{
    _isStatusBarHidden = isStatusBarHidden;

    // For iOS 7.0 or above...
    if([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)])
    {
        // Update status bar visibility.
        [self setNeedsStatusBarAppearanceUpdate];   // Tell the view controller that the return value of -prefersStatusBarHidden has changed.
    }
    // Otherwise...
    else
    {
        // Show or hide status bar.
        [[UIApplication sharedApplication] setStatusBarHidden:_isStatusBarHidden withAnimation:UIStatusBarAnimationNone];

        // Resize view.
        self.view.frame = [UIScreen mainScreen].applicationFrame;
    }
}

Здесь BOOL _isStatusBarHidden; является переменной-членом класса контроллера представления.

Примечания:

  • - prefersStatusBarHidden и - setNeedsStatusBarAppearanceUpdate для iOS 7.0 +.
  • - applicationFrame возвращает фрейм для окна приложения.
  • Чтобы проверить портретную/альбомную ориентацию на симуляторе iOS, используйте (поверните влево) и (поверните вправо).
  • Чтобы проверить строку состояния вызова в симуляторе iOS, используйте Y.