2013-10-25 3 views
2

viewDidLoad 또는 viewDidAppear 메서드에서 간단한 UIView 애니메이션을 시도하고 있지만 애니메이션이 적용되지 않습니다.viewDidLoad/viewDidAppear의 UIView 애니메이션?

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

스크린 샷을 페이드 인해야합니다. 두 개의 이미지를 사용하는 경우 다른 이미지 위에 하나의 이미지보기를 배치해야합니다. 이것을 안으로 드래그하십시오. viewDidAppear : [super viewDidAppear : animated]를 호출 한 후;

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()