2013-10-25 5 views
2

Я пытаюсь простой анимации UIView в методе viewDidLoad или viewDidAppear, но он не оживляет.UIView Animation at viewDidLoad/viewDidAppear?

UIImage *bluredScreenshot = [self.parentViewControllerScreenshot applyBlur]; 

    [UIView transitionWithView:self.screenshotView duration:3.0f options:UIViewAnimationOptionTransitionCrossDissolve animations:^{ 
     self.screenshotView.image = bluredScreenshot; 
    } completion:nil]; 

Простой крест, растворяющий два изображения. При запуске из viewDidLoad или viewDidAppear изображение изменяется, но не анимируется.

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

Возможно ли это сделать из метода viewDidLoad? Как бы вы решили это?

Спасибо.

+0

Почему бы вы сделать это в 'viewDidLoad'? Вид еще не показан. Сделайте анимацию в 'viewDidAppear:' или, возможно, 'viewWillAppear:'. – rmaddy

+0

Я попытался в 'viewDidAppear' с тем же эффектом. –

ответ

3

Вы должны исчезнуть на скриншоте. Если вы используете два изображения, вам нужно поместить один вид изображения поверх другого. pop этот внутренний видDidAppear: после звонка [super viewDidAppear: анимированный];

UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.screenshotView.frame]; 
[self.view addSubview:imageView]; 
    [imageView setAlpha:0.0f]; 
    imageView = blurredScreenshot; 
    [UIView animateWithDuration:0.3f animations:^{ 
       [imageView setAlpha:1.0f]; 
      } completion:^(BOOL finished){ 
       self.imageView.image = blurredScreenshot; 
       [imageView removeFromSuperview]; 
}]; 
3

Когда изображение загружается, вы не можете анимировать, потому что ничего не нужно оживлять. Попробуйте в viewdidapear: и не использовать переход

[UIView animateWithDuration:3. 
         delay:0 
        options:UIViewAnimationOptionTransitionCrossDissolve 
       animations:^{ 
          self.screenshotView.image = bluredScreenshot; 
       } 
       completion:nil]; 
+0

К сожалению, тот же результат найден в нем ... –

+0

для меня он решил, что точка, что viewDidLoad не оживляет. –

0

Просто напоминание, иногда ваша проблема может быть вызвана не вызывая:

self.layoutIfNeeded()