Ответ 1
У меня была аналогичная проблема в одной точке, и этот бит кода исправил это для меня:
[viewController.view setFrame: [viewController.view bounds]];
Я обнаружил, что после установки
[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]
at viewDidLoad
, тогда, если я хочу выровнять изображение сверху, мне нужно будет установить его позицию как .y = -20;
В любом случае, чтобы координата y верхнего положения была равна 0? или он обречен быть -20 после того, как он отклонил строку состояния?
Спасибо за чтение.
У меня была аналогичная проблема в одной точке, и этот бит кода исправил это для меня:
[viewController.view setFrame: [viewController.view bounds]];
Решение Джастина Галлахера почти правильно, но имеет один главный побочный эффект.
Скрытие строки состояния, а затем установка рамки представления на собственные границы будет работать в текущей ориентации. Но вращение будет уродливым. Если вы находитесь на портрете, например, поворот устройства в альбомный режим приведет к смещению всего кадра изображения вправо на 256 точек, оставив на экране большое черное пространство.
Решение bmoeskau (к другому побочному эффекту) в комментариях выше позволяет избежать этой проблемы:
[self.view setFrame: [[UIScreen mainScreen] bounds]];
Я предполагаю, что вы должны добавить элемент UIStatusBarHidden в Info.plist, если хотите, чтобы строка состояния была удалена с начала.
Вы также можете посмотреть, как настроить автоматизацию для изменения вертикальной (и горизонтальной)
См. ниже Добавить текстовый вид здесь, например, о том, что нажать в InterfaceBuilder
Цитата:
Щелкните по горизонтальной и вертикальной линиям во внутреннем поле, чтобы они стали сплошными красными линиями. Анимированный предварительный просмотр показывает, что внутренний размер текстового вида будет расти и сокращаться с помощью окна.
Убедитесь, что размер корневого представления в вашем нибе правильно установлен на 480x320. Некоторые из проектов шаблонов создают их на уровне 460x320 для учета строки состояния. Если вы загружаете представление, отображающее полный экран, а строка состояния скрыта, он должен работать, и вам не нужно ничего делать вообще.
Если у вас есть представление прокрутки, вложенное внутри представления, обязательно измените это. Этот код решил все мои проблемы.
[self.view setFrame: [self.view bounds]];
[self.theScroller setFrame: [self.view bounds]];
"theScroller" - это имя моего прокрутки.
Следующее решение работает правильно
В вашем контроллере просмотра добавьте следующее:
- (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;
является переменной-членом класса контроллера представления.
Примечания: