2009-02-11 3 views
2

Я хочу изменить ориентацию устройства при появлении определенного вида. Я получил много информации о действии, которое необходимо предпринять, когда меняется ориентация, но я не получаю, как я автоматически изменяю ориентацию устройства. Обратите внимание, что мои другие представления должны оставаться в ориентации по умолчанию.Изменение ориентации устройства для отдельного подкласса UIViewController

ответ

0
[[UIDevice currentDevice] setOrientation:UIDeviceOrientationPortrait]; 

Обратите внимание, что это не входит в рамки UIDevice в документации API, так что компания Apple может отклонить заявку, которая использует это.

+0

Это работает, но поскольку @micco отмечает, что приложение может быть отклонено. Это было подтверждено [@got nate] (http://stackoverflow.com/users/145186/): «Спасибо, что отправили [имя приложения] в App Store. К сожалению, он не может быть добавлен в App Store, потому что он использует частный API. Использование непубличных API-интерфейсов, которые, как указано в разделе 3.3.1 Лицензионного соглашения с Программой разработчиков iPhone, запрещены: «3.3.1 Приложения могут использовать только Документированные API в порядке, предписываемом Apple, и не должны использовать или использовать какие-либо частные API-интерфейсы «. Некоммерческий API, который включен в ваше приложение, установлен в SetOrientation :. ' –

0

Вы можете изменить ориентацию вида с помощью CGAffineTransforms вместо частных API. Вы должны изменить ориентацию UIStatusBarOrientation и найти угол поворота для просмотра:

Например, если ваш вид в альбомной ориентации и вы хотите его вернуть в портрет.

CGAffineTransform transform = CGAffineTransformIdentity; 

switch ([[UIApplication sharedApplication] statusBarOrientation]) { 

    case UIInterfaceOrientationLandscapeLeft: 
     transform = CGAffineTransformMakeRotation(M_PI_2); 
     break; 

    case UIInterfaceOrientationLandscapeRight: 
     transform = CGAffineTransformMakeRotation(-M_PI_2); 
     break; 

    default: 
     break; 
} 

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait]; 

[UIView animateWithDuration:0.2f animations:^ { 

    [view setTransform:transform]; 
}]; 

[view setFrame:CGRectMake(0, 0, 320, 480)]; 
[view setNeedsLayout]; 
Смежные вопросы