2013-08-21 5 views
2

나는 UILabel에 0에서 주어진 값까지 증가하도록 애니메이션을 적용해야하는 숫자가 포함되어 있습니다. 레이블은 UITableView 안에 있으며 UITableViewCell 하위 뷰입니다. 보기가 스크롤되는 동안 내 번호가 움직이지 않는 이상한 이유가 있습니다. 스크롤링 숫자를 일시 중지하면 애니메이션이 활성화됩니다. 왜 그런가, 어떻게 고쳐야 하는가?스크롤 할 때 숫자 증가 애니메이션

NSInteger fromValue = 0; 
NSInteger toValue = 57; //In this example toValue has to be greater than fromValue 
NSString *suffix = @"K"; 
NSTimeInterval interval = 0.016; //Adjust for different animation speed 
NSTimeInterval delay = 0.0; 
for (float i = fromValue; i <= toValue; i++) 
{ 
    NSString *labelText = [NSString stringWithFormat:@"%0.3f%@", i, suffix]; 
    [numberLabel1 performSelector:@selector(setText:) withObject:labelText afterDelay:delay]; 
    delay += interval; 
} 

두 번째는 같은 기능을하지만 나던 작품을 제공 UICountingLabel from Giuthub을 사용하는 것이었다 : 실패

접근 방법 1. 왜? 어떻게 고치는 지? 그것을 사용하는 나의 코드는 다음과 같이 보입니다 :

UICountingLabel *numberLabel1 = [[UICountingLabel alloc] initWithFrame:CGRectMake(0, 105, winSize.width/2, 40)]; //winSize is 
numberLabel1.textAlignment = NSTextAlignmentCenter; 
numberLabel1.method = UILabelCountingMethodLinear; 
numberLabel1.format = @"%.3f"; 
[numberLabel1 countFrom:0 to:num1.floatValue withDuration:countDuration]; 

"tick"을 만드는 다른 방법은 없습니까? 정말로 나쁘게 스크롤 할 수 있으려면이 애니메이션이 필요합니다.

건배 월

답변

3

귀하의 UICountingLabel 방법은 작업 할 수 있습니다. 문제는 타이머가 연결된 실행 루프 모드이며 기본 실행 루프 모드이며 스크롤이 진행되는 동안 실행되지 않습니다. 타이머를 수정하여 NSRunLoopCommonModes에 있으면 타이머가 작동하고 스크롤하는 동안 레이블이 업데이트됩니다.


UICountingLabel.m에서 라인 137, NSRunLoopCommonModesNSDefaultRunLoopMode를 교체합니다.

+0

어떻게 그렇게하는 지 설명 할 수 있습니까? – Majster

관련 문제