2014-01-29 6 views
2

Я создаю приложение iOS, и одним методом у меня есть цикл for, который выполняет серию анимаций, которые продолжаются около 2 секунд.iOS предотвращает вращение до тех пор, пока анимация не завершится

Моя проблема заключается в том, что если пользователь поворачивает устройство во время анимации все еще продолжается, это портит форматирование для новой ориентации (все работает именно так, как это должно, если вращение происходит после завершение анимации).

Так мне было интересно, если есть способ отложить ротацию

+0

Вы используете блоки анимации 'UIView'? – hgwhittle

+0

Да, я использую блоки анимации – user1855952

ответ

0

Вы могли бы BOOL переменную экземпляра, при обновлении в зависимости от того ваша анимация завершена или нет. Затем переопределите метод shouldAutorotate и верните это значение BOOL. Может выглядеть примерно так:

@implementation YourViewController { 
    BOOL _shouldAutoRotate; 
} 

-(BOOL)shouldAutorotate { 
    [super shouldAutorotate]; 
    return _shouldAutoRotate; 
} 

-(void)yourAnimationMethod { 

    _shouldAutoRotate = NO; 

    [UIView animateWithDuration:2.0f animations:^{ 
     //your animations 
    } completion:^(BOOL finished) { 
     if(finished) { 
      _shouldAutoRotate = YES; 
     } 
    }]; 
} 
Смежные вопросы