Разрешить вращение только одного вида из нескольких в настройках панели вкладок - PullRequest
0 голосов
/ 25 октября 2011

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

1 Ответ

1 голос
/ 25 октября 2011

Добавьте это к тем 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;
}
...