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

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


person Teddy13    schedule 25.10.2011    source источник


Ответы (1)


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

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

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

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    return YES;
}

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

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    if (myBoolThatAllowsAllOrientations)
    {
        return YES;
    }
    if (interfaceOrientation == UIDeviceOrientationPortrait ||  interfaceOrientation ==  UIDeviceOrientationPortraitUpsideDown) 
    {
        return YES;
    }
    return NO;
}
person Totumus Maximus    schedule 25.10.2011
comment
Большое спасибо Totumus Maximus, гениально! - person Teddy13; 25.10.2011