iphone авторотация анимация - PullRequest
4 голосов
/ 01 июня 2010

Можно ли отключить анимацию для автоповорота?Я хочу, чтобы он вращался, но я просто не хочу, чтобы анимация появлялась (как мгновенное переключение).

Ответы [ 3 ]

7 голосов
/ 06 июля 2011

Если вам действительно нужно, просто используйте setAnimationsEnabled из UIView:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    [UIView setAnimationsEnabled:NO]; // disable animations temporarily
}

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    [UIView setAnimationsEnabled:YES]; // rotation finished, re-enable them
}

Это помогает мне. Конечно, делать это не рекомендуется, если у вас нет веских причин для этого.

4 голосов
/ 09 июня 2011

Просто добавьте следующий код, чтобы перезаписать стандартную анимацию вращения:

- (void)viewDidLoad
{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:)   name:UIDeviceOrientationDidChangeNotification object:nil];
}

- (void)didRotate:(NSNotification *)notification {
    orientation = [[UIDevice currentDevice] orientation];
    if(orientation == UIDeviceOrientationUnknown || orientation == UIDeviceOrientationFaceDown || orientation == UIDeviceOrientationFaceUp){
        orientation = UIDeviceOrientationPortrait;
    }
    [[UIApplication sharedApplication] setStatusBarOrientation:orientation animated:NO];
    [self positionScreenElements];
}
0 голосов
/ 09 апреля 2013

@ Нильс Мунк, к сожалению, это не работает должным образом, setStatusBarOrientation ожидает UIInterfaceOrientation не UIDeviceOrientation, а приведение - плохая практика. Поправь меня, если я не прав

...