В ландшафтном режиме iPad отображается черная полоса в iOS7

Когда мое приложение появляется в ландшафтном режиме, появляется черная полоса (того же размера и положения, что и док-станция), и мое приложение обрезается, и оно никогда не исчезает, когда я поворачиваю устройство. Он отлично работал в iOS 6, и я не могу найти никакого решения.


person Gaspar Oliveira    schedule 20.09.2013    source источник
comment
можешь прикрепить скриншот?   -  person Apollo SOFTWARE    schedule 20.09.2013


Ответы (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.

снимите флажок

person Apollo SOFTWARE    schedule 20.09.2013
comment
спасибо, но нашел более простой способ. Просто нужно было подкорректировать маски изменения размера. ;) - person Gaspar Oliveira; 24.09.2013

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

person Gaspar Oliveira    schedule 07.10.2013
comment
не могли бы вы быть более конкретным? - person Adam W. Dennis; 17.09.2014
comment
перенастройка масок изменения размера бесполезна; мы не знаем, что это значит. - person Adam Wilt; 08.11.2014