Разрешить вращение только одного вида из нескольких в настройках панели вкладок

У меня есть контроллер панели вкладок с четырьмя различными представлениями. Недавно я хотел включить вращение только для одного из моих взглядов. Я где-то читал, что для контроллеров вкладок все подпредставления необходимо вернуть YES в методе shouldAutoRotateToInterfaceOrientation:, Я сделал это, и все работает, однако я хочу, чтобы только один из видов перешел в ландшафтный режим, а не все. Кажется, я могу получить его только в ситуации "все или ничего", что означает, что он либо вращается, либо не вращается.

1 ответ

Решение

Добавьте это к тем VC, которые поддерживают только портретный режим:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    if (interfaceOrientation == UIDeviceOrientationPortrait ||  interfaceOrientation ==  UIDeviceOrientationPortraitUpsideDown) 
    {
        return YES;
    }
    return NO;
}

Добавьте это в VC, который также поддерживает ландшафт:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    return YES;
}

Выше будет означать, что вам нужно 4 ВК для управления вкладками, а это не то, что вы хотели. То, что вы можете сделать, это сделать дополнительный логический параметр в вашем mainVC, который по умолчанию НЕТ. Затем, когда вы открываете это конкретное представление, которое поддерживает все ориентации, вы просто помещаете это логическое значение в YES и делаете следующий код:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    if (myBoolThatAllowsAllOrientations)
    {
        return YES;
    }
    if (interfaceOrientation == UIDeviceOrientationPortrait ||  interfaceOrientation ==  UIDeviceOrientationPortraitUpsideDown) 
    {
        return YES;
    }
    return NO;
}
Другие вопросы по тегам