Как установить верхнюю позицию = 0 после setStatusBarHidden: Да? - PullRequest
12 голосов
/ 06 февраля 2009

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

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

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

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

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

Ответы [ 6 ]

11 голосов
/ 06 февраля 2009

В какой-то момент у меня была похожая проблема, и этот фрагмент кода исправил ее для меня:

[viewController.view setFrame: [viewController.view bounds]];
4 голосов
/ 14 марта 2012

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

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

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

[self.view setFrame: [[UIScreen mainScreen] bounds]];
3 голосов
/ 06 февраля 2009

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

Discussion@apple.com

Вы также можете посмотреть настройку автоматического изменения размера по вертикали (и горизонтали)

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

Цитата:

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

2 голосов
/ 06 февраля 2009

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

0 голосов
/ 29 ноября 2013

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

  • на 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 .
0 голосов
/ 18 декабря 2012

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

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

"theScroller" - это название моего прокрутки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...