Objective-C изменить ориентацию устройства только для одного UiViewController

Я хочу изменить ориентацию устройства только для одного UiViewController. Имя моего первого UiViewController — VideoLaunch. Сначала я хочу альбомную ориентацию в этом UiViewController. Когда я передаю другой uiviewcontroller, я изменяю статическое значение с именем «is» на отличное от nil. Когда я запускаю в режиме отладки, я вижу

иначе вернуть UIInterfaceOrientationMaskPortrait

эта линия проходит. Но ориентация не меняется.

AppDelegate.m

 - (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {   
    if([VideoLaunch is] == nil)
        return UIInterfaceOrientationMaskLandscape;

    else return UIInterfaceOrientationMaskPortrait;
 }

person Meryem Uysal    schedule 02.03.2016    source источник
comment
проверьте это stackoverflow.com/questions/27009979/   -  person Rishab    schedule 02.03.2016


Ответы (1)


Вам нужно переопределить следующий метод

- (BOOL)shouldAutoRotate

верните YES для того, где вы хотите разрешить вращение.

Затем также переопределите поддерживаемыеDeviceOrientations и укажите, что вы хотите там. Например:

- (BOOL)shouldAutorotate {
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskAll;
}

и убедитесь, что вы правильно разрешили ориентацию в общих настройках вашей цели.

person Sachin Patil    schedule 02.03.2016
comment
после Xcode 7 используйте (UIInterfaceOrientationMask)supportedInterfaceOrientations - person Vladyslav Panchenko; 19.04.2019