2012-09-13 2 views

답변

4

indexPath.row을 사용하여 지연을 계산하십시오.

float animationDelay = 0.2f; 
[UIView animateWithDuration:0.3f 
         delay:animationDelay * indexPath.row 
        options:0 
       animations:^{ 
      cell.imageView.transform = CGAffineTransformMakeScale(1.0f, 1.0f); 
     } completion:^{}]; 

이렇게하면 모든 행이 그 위의 행에 비해 0.2 초 지연됩니다. 물론 이것은 처음 테이블을로드 할 때만 작동하지만, 이것이 애니메이션으로하려는 것입니다. 스크롤을 시작하고 새 셀이로드되면 지연을 0으로 설정해야합니다. 그렇지 않으면 이미지가 표시되는 데 시간이 걸립니다.

내가합니다 ( init 또는 awakeFromNib 방법에서) 처음 YES로 설정 loadingTheFirstTime라는 BOOL 바르를 도입하는 것이 좋습니다이를 달성합니다. 그런 다음 테이블이 처음 표시 될 때 NO으로 설정할 수 있습니다. 셀을 만들 때이 변수를 먼저 확인하여 지연을 추가해야하는지 확인해야합니다.

+0

젠장! 나는 화상을 입었다 ... :) – rdurand

+0

에픽 맨, 고마워! :) – Devfly

0

모든 셀을 통과하여 루프를 통해 매번 애니메이션을 실행하는 for 루프가있는 메소드를 설정할 수 있습니까? 공연과 관련해서는 전혀 모른다. 퍼포먼스에 좋을 것이라고 상상하지 못할 것입니다. 특히 많은 세포가있는 경우에는 그렇습니다. 그러나 항상 시도하고 알아낼 수 있습니다! :)

2

나는 당신이 cellForRowAtIndexPath:에 있다고 여기에서 생각했다. 애니메이션을 다음과 같이 변경하십시오.

[UIView animateWithDuration: 3.0 
         delay: indexPath.row 
        options: UIViewAnimationCurveLinear 
       animations: ^{ 
        cell.imageView.transform = CGAffineTransformMakeScale(1.0f, 1.0f); 
       } 
       completion:^(BOOL finished) { 

       }]; 

애니메이션은 1 초 간격으로로드됩니다. 이 기능을 사용하지 않는 경우 셀을 만들 때 태그를 셀에 설정하고 해당 태그를 지연에 넣으십시오.

관련 문제