UIActivityIndicatorView не анимируется после появления в transitionWithView

В моем основном представлении есть подвид с UIActivityIndicatorView. Изначально для свойства hidden этого подпредставления установлено значение YES.

Я хочу, чтобы это подпредставление исчезало на экране. Для этого я использовал следующий код:

[UIView transitionWithView:self.view
                  duration:3.0
                   options:(UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction)
                animations:^{
                    self.subviewWithActivitySpinnerInIt.hidden = NO;
                }

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

self.subviewWithActivitySpinnerInIt.hidden = NO;

Есть идеи, что происходит?

(с использованием Xcode 4.2 и iOS 5.)


person Jon Cox    schedule 28.01.2012    source источник


Ответы (1)


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

[UIView transitionWithView:self.view
                  duration:3.0
                   options:(UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction)
                animations:^{ self.subviewWithActivitySpinnerInIt.hidden = NO; }
                completion:^{ self.subviewWithActivitySpinnerInIt.hidden = NO; }];

В качестве альтернативы, хотя это может не соответствовать вашим потребностям, вы можете рассмотреть возможность использования animateWithDuration вместо transitionWithView. Я думаю, что приведенный ниже код эквивалентен:

[UIView animateWithDuration:3.0
                      delay:nil
                    options:UIViewAnimationOptionCurveLinear
                 animations:^{
                     self.subviewWithActivitySpinnerInIt.alpha = 1.0;
                 }
                 completion:nil ];
person Nortiest    schedule 24.04.2012