Принудительная ориентация в портретном режиме

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

На вкладке Project Summary включите режим LandscapeLeft, поэтому мне приходится отключать таким образом вращение в остальной части Viewcontroller, кроме ВК галереи изображений.

Я хочу сохранить вращение в портретном режиме, чтобы сделать это и заблокировать весь портрет ВК, я использовал следующий код

-(BOOL)shouldAutorotate{
return YES;
}

-(NSInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskPortrait;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
}
return UIInterfaceOrientationPortrait;
}

Это, держите меня в ландшафтном режиме в предыдущем ВК, когда он должен быть повернут в Портрет.

Любая идея сделать?


person user1908661    schedule 05.09.2013    source источник
comment
Вы используете навигацию или панели вкладок?   -  person Tommy Devoy    schedule 06.09.2013


Ответы (1)


Для портретного режима VC,

#pragma mark iOS 5 Orientation Support

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

     return UIInterfaceOrientationIsPortrait(interfaceOrientation);
}

#pragma mark iOS 6 Orientation Support

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

Для ландшафтного режима VC,

#pragma mark - iOS 5.0 and up Rotation Methods

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    return UIInterfaceOrientationMaskLandscape;

}

#pragma mark - iOS 6.0 and up Rotation Methods

- (NSUInteger)supportedInterfaceOrientations;
{
    return UIInterfaceOrientationMaskLandscape;
}

Если вы используете navigationController,

Создайте такую ​​категорию,

    @interface UINavigationController (Rotation_IOS6)

    @end

    @implementation UINavigationController (Rotation_IOS6)

    -(BOOL)shouldAutorotate
    {
        if([self.visibleViewController isMemberOfClass:NSClassFromString(@"YourLandscapeViewController")])
        {
            return UIInterfaceOrientationMaskLandscape
        }
        return NO;
    }

    - (NSUInteger)supportedInterfaceOrientations
    {
        return [[self topViewController] supportedInterfaceOrientations];
    }

    - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
    {
        if([self.visibleViewController isMemberOfClass:NSClassFromString(@"YourLandscapeViewController")])
        {
            return UIInterfaceOrientationMaskLandscape
        }
        return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
    }

@end
person karthika    schedule 06.09.2013
comment
Спасибо за это! Не могли бы вы обновить свой пример кода, чтобы он возвращал UIInterfaceOrientationMask вместо NSUInteger для supportedInterfaceOrientations? В текущем xCode (9.x) текущая версия выдает предупреждение. - person Stijnster; 13.05.2016