Изменение ориентации устройства для определенного подкласса UIViewController - PullRequest
2 голосов
/ 11 февраля 2009

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

Ответы [ 2 ]

0 голосов
/ 20 марта 2012

Вы можете изменить ориентацию вида, используя 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];
0 голосов
/ 11 февраля 2009
 [[UIDevice currentDevice] setOrientation:UIDeviceOrientationPortrait];

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...