2011-07-30 3 views
1

커스텀 UITableViewCell이있는 UITableView가 있습니다. 각 셀은 비동기 적으로 이미지를로드하고 표시합니다.이 모든 것이 올바르게 작동하고 테이블 뷰가 완벽하게 스크롤됩니다.셀에있는 UITableView 애니메이션이 부드럽게 움직여 깨짐이 발생합니다.

이제 셀 이미지에 "페이드 인"애니메이션을 추가했지만 테이블을 바꿔서 스크롤합니다. 화면을 쓸어 넘기면 이미지가 "페이드 인"되기를 원하는대로 테이블 뷰의 스크롤 애니메이션이 멈추게됩니다. 마치 셀 이미지에 새로 도입 된 '페이드 인'이 스크롤 애니메이션을 방해하는 것처럼 거의 마찬가지입니다.

이것을 우회하는 방법이 있습니까? 이 공통적 인 행동인가, 아니면 내가 정말로 이상한 것을 할 수 있었는가?

이미지가 비동기 적으로로드되면 호출되는 콜백 함수 (애니메이션 함수)는 다음과 같습니다.

-(void)imageReady:(UIImage *)image FromUrl:(NSString *)url 
{ 
    [UIView animateWithDuration:0.3 animations:^ 
    { 
     [self.imageThumbnail setImage:image]; 
     self.imageThumbnail.alpha = 1; 
    }]; 

} 

나는 초기 단계에서 알파를 0으로 설정했다.

모두에게 감사드립니다.

답변

5

필자의 경우 필요한 것은 animateWithDuration 호출에서 "UIViewAnimationOptionAllowUserInteraction"옵션뿐입니다.

[UIView animateWithDuration:0.3 delay:0.0 options:(UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction) animations:^ 
     { 
      self.imageThumbnail.alpha = 1; 
     } completion:nil]; 
+0

와우,이 사실을 알아내는 데 영원히 걸렸을 것입니다. 이 옵션은 iOS 4에서는 기본적으로 사용 중지되어 있지만 iOS 5에서는 기본적으로 사용하도록 설정되어있는 것 같습니다. –

1

UITableViewUIScrollView에 해당하므로 UIScrollViewDelegate 개의 메소드 인 -scrollViewDidScroll:-scrollViewDidEndDecelerating:을 구현합니다. 또한 클래스에 BOOL을 추가합니다 (예 : shouldPerformAnimations).

에서 shouldPerformAnimationsNO으로 설정하십시오. 또는 YES (-scrollViewDidEndDecelerating:)으로 설정하십시오.

imageReady:fromURL:에서 애니메이션을 수행하기 전에 수행해야 할 작업은 shouldPerformAnimations입니다. 사용자가 볼 수없는 애니메이션을 수행하는 것이 셀이 아니라면 스크롤하는 것이 중요합니다. 이렇게하면 테이블 뷰가 스크롤을 멈출 때까지 기다린 다음 보이는 모든 셀에서 애니메이션을 수행합니다. UITableView-indexPathForVisibleRows 메서드가있는 보이는 셀에 대한 인덱스 경로 배열을 얻을 수 있습니다.

관련 문제