2012-04-18 5 views
1

이미지 애니메이션을 적용해야합니다. 나는 많은 수의 이미지를 가지고 있으며 이것은 비디오로 재생되어야합니다. 때때로 그들은 서버에서 업데이트 될 때 일부 이미지를 변경해야합니다. 그래서 재생하면이 새로운 이미지가 자동으로 업데이트됩니다.애니메이션에서 이미지를 동적으로 변경합니다. IOS

나는 UIImageView를 사용해 보았습니다. 거기서 우리는 애니메이션을 제어 할 수 없습니다. 그런 다음 값 배열에 이미지 배열을 제공하는 CAKeyframeAnimation을 시도했습니다. 애니메이션을 재생하고 일시 중지 할 수있었습니다. 그러나 여기에도 나는 재생하는 동안 동적으로 이미지를 변경할 수 없습니다.

누구든지이 문제를 해결할 수 있습니까?

감사 미아

답변

0

있는 UIImageView의 애니메이션 시스템은 매우 제한적이다. 2 개의 이미지 뷰를 사용하여 직접 구현하는 것이 좋습니다.

당신은 이상에 내가 당신을 위해 방법을 쓴 UIView animateWithDuration

를 사용하여 하나 개의 이미지 뷰의 이미지와 페이드를 변경합니다. 참고 사항 : 나는 그것을 테스트하지 않았습니다.

그것은 당신이 '프레임'이라는 배열에 프레임이 두 UIIMageView 서로 이른바 'imgv1'와 'imgv2'

-(void)performAnimationOfFrameAtIndex:(NSNumber*)indexNum 
{   
    int index = [indexNum intValue]; 
    if(index >= frames.count) 
    { 
     return; 
    } 
    UIImage *img = [frames objectAtIndex:index]; 

    UIImageView *imgIn; 
    UIImageView *imgOut; 
    if(index % 2 == 0) 
    { 
     imgIn = imgv1; 
     imgOut = imgv2; 
    } 
    else { 
     imgIn = imgv2; 
     imgOut = imgv1; 
    } 
    imgIn.image = img; 
    [self.view sendSubviewToBack:imgIn]; 

    [UIView animateWithDuration:0.1 animations:^{ 
     imgIn.alpha = 1; 
     imgOut.alpha = 0; 
    } completion:^(BOOL finished) { 
     [self performSelectorOnMainThread:@selector(performAnimationOfFrameAtIndex:) withObject:[NSNumber numberWithInt:index+1] waitUntilDone:NO]; 
    }]; 

} 
+0

당신은 내가 100 프레임을 가지고 있다는 것을 의미합니다. 나는 3 개의 이미지 뷰를 사용하고 처음 3 개를 배치 한 다음이 이미지 뷰에서 다음 3 개의 이미지를 교체해야합니다. 조금 더 자세히 설명해 주시겠습니까? – mia

+0

위의 수정 된 답변보기 – EsbenB

0

사용이 UIImageViews하고이를 교환의 상단에 배치 있다고 가정합니다.

"애니메이션"UIView에 약한 참조가있는 경우 완료 블록에서 애니메이션이 완료되었는지 확인하십시오. 그렇지 않으면 다른보기로 이동할 때 성능 문제가 발생할 수 있습니다. 애니메이션 메서드에 대한 재귀 호출은 계속됩니다!

- (void)animateImagesAtIndex:(NSNumber *)imageIdx { 
    // Do something here 
    [UIView animateWithDuration:1 animations:^{ 
     // Do swap 
    } 
    completion:^(BOOL finished) { 
     if (finished) { 
      [self animateImagesAtIndex:imageIdx]; 
     } 
    }]; 
} 
0

UIImageView는 일련의 이미지에 대한 애니메이션을 지원합니다. 이미지의 배열로 animationImages 속성을 설정하고 startAnimating 및 stopAnimating 메서드를 호출하면됩니다.

관련 문제