Вручную установить ориентацию интерфейса - PullRequest
4 голосов
/ 01 сентября 2011

Есть ли простой способ вручную установить ориентацию интерфейса?Мне нужно установить интерфейс на портрет, хотя ориентация устройства может быть в альбомной ориентации во время загрузки.Кинда хочет держаться подальше от CGAffineTransforms.

Ответы [ 3 ]

16 голосов
/ 01 сентября 2011

Один метод, который я знаю, который работает для меня (и немного взломан и может отображать одну ориентацию перед изменением желаемой ориентации):

- (void)viewDidAppear:(BOOL)animated 
{
    [super viewDidAppear:animated];

    UIApplication* application = [UIApplication sharedApplication];

    if (application.statusBarOrientation != UIInterfaceOrientationPortrait)
    {
        UIViewController *c = [[UIViewController alloc]init];
        [self presentModalViewController:c animated:NO];
        [self dismissModalViewControllerAnimated:NO];
        [c release];
    }
}
2 голосов
/ 01 сентября 2011

Во-первых, установите ваше приложение и представления так, чтобы они поддерживали только портрет, затем используйте этот метод категории, взятый из моей библиотеки рефакторинга, es_ios_utils :

@interface UIViewController(ESUtils)
    // Forces without using a private api.
    -(void)forcePortrait;
@end

@implementation UIViewController(ESUtils)

-(void)forcePortrait
{
    //force portrait orientation without private methods.
    UIViewController *c = [[UIViewController alloc] init];
    [self presentModalViewController:c animated:NO];
    [self dismissModalViewControllerAnimated:NO];
    [c release];
}

@end

Представление, отклоненное перед кадромзавершено, не будет отображаться.

2 голосов
/ 01 сентября 2011

переопределить это для управления ориентацией до загрузки ...

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
...