Авторотация в iOS6


Я обновляю свое приложение для iOS 6 и у меня возникли проблемы с изменениями в autorotation. Мое приложение имеет кучу контроллеров вида, и все они должны поддерживать только книжную раскладку, кроме 1, которая должна поддерживать все 3 ориентации, кроме перевернутой.

Если я добавляю метод application:supportedInterfaceOrientationsForWindow: в делегат приложения, нужно ли мне добавлять условия, чтобы проверить, отображаю ли я тот VC, который я хочу иметь возможность вращать?

В документации говорится, что если я реализую supportedInterfaceOrientations на VC, то он должен переопределите метод делегата приложения, но это не так. У меня есть оператор log в методе на дочернем VC, и он вызывается один раз, когда VC загружается, но его не вызывают, когда я поворачиваю устройство, но метод в делегате приложения.

Если я полностью удаляю метод из делегата приложения, ориентация моих VC, похоже, полностью зависит от настроек ориентации интерфейса, поддерживаемых моими приложениями. Это, конечно, кажется, связано с тем, что метод supportedInterfaceOrientations вызывается один раз на создание ВК, но никогда, Когда устройство вращается.

Есть ли у кого-нибудь идеи или предложения? Это было бы очень ценно.
3 3

3 ответа:

Вам также нужно переопределить - (BOOL) shouldAutorotate и вернуть "YES". Это делает его так, что вы объявляете, какие ориентации ваш VC поддерживает с "supportedInterfaceOrientations", а затем при вращении он должен вызвать"shouldAutorotate". Если у вас есть какой-либо навигационный контроллер или панель вкладок, вам может потребоваться подкласс, чтобы сделать то же самое в них. У меня самого недавно была такая проблема.

Заменить [window addSubview:viewController.view]; с window.rootViewController = viewController;

Попробуйте это...

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration
{

    if (UIInterfaceOrientationIsLandscape(interfaceOrientation))  
    { 
        // here to  implement landscope code
    }
    else
    {  
        // here to  implement setframePortrait
    }
}