Когда мое приложение появляется в ландшафтном режиме, появляется черная полоса (того же размера и положения, что и док-станция), и мое приложение обрезается, и оно никогда не исчезает, когда я поворачиваю устройство. Он отлично работал в iOS 6, и я не могу найти никакого решения.
В ландшафтном режиме iPad отображается черная полоса в iOS7
Ответы (2)
Для приложений с поворотом экрана
используйте NSNotificationCenter для обнаружения изменений ориентации, добавив
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationDidChangeStatusBarOrientation:)
name:UIApplicationDidChangeStatusBarOrientationNotification
object:nil];
in if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7)
и создайте новый метод
- (void)applicationDidChangeStatusBarOrientation:(NSNotification *)notification;
{
int a = [[notification.userInfo objectForKey: UIApplicationStatusBarOrientationUserInfoKey] intValue];
int w = [[UIScreen mainScreen] bounds].size.width;
int h = [[UIScreen mainScreen] bounds].size.height;
switch(a){
case 4:
self.window.frame = CGRectMake(0,20,w,h);
break;
case 3:
self.window.frame = CGRectMake(-20,0,w-20,h+20);
break;
case 2:
self.window.frame = CGRectMake(0,-20,w,h);
break;
case 1:
self.window.frame = CGRectMake(20,0,w-20,h+20);
}
}
в AppDelegate
так что при изменении ориентации он вызовет оператор switch для определения ориентации экрана приложения (книжная, перевернутая, альбомная левая или альбомная правая) и соответственно изменит рамку окна приложения, чтобы создать иллюзию строки состояния iOS 6.
На это ссылается @ строка состояния iOS 7 обратно в стиль iOS 6 по умолчанию в приложении для iPhone?
В качестве альтернативы:
Если вы используете раскадровки (iOS 5+) и не хотите, чтобы ваши контроллеры представления перекрывались строкой состояния (и панелями навигации), снимите флажок «Расширить края под верхними панелями» в Xcode 5.0 IB Storyboard.

Просто нужно было подкорректировать маски изменения размера.