2013-02-07 3 views
1

나는 트리거되는 타이머에 따라 자동으로 UIScrollview를 스크롤하기 위해 멋지게 작동하는 일부 코드를 구현했습니다. 여기UIScrollview에서 애니메이션 스크롤 속도 제어 - IOS 개발

그것이 그러나

.... 
CGPoint offset; 
.... 
offset = scroller.contentOffset; 
.... 
- (void) scrollWords: (NSTimer *) theTimer 
{ 
offset.y = offset.y+300; 
[UIScrollView beginAnimations:@"scrollAnimation" context:nil]; 
[UIScrollView setAnimationDuration:50.0f]; 
[scroller setContentOffset:offset]; 
[UIScrollView commitAnimations]; 

} 

, 나는 스크롤이 일어나고있는 동안은, 스크롤 속도가 다릅니다 것으로 나타났습니다; 그것의 절반은 초당 2 줄 또는 3 줄의 텍스트를 스크롤하지만, 시작과 끝에서 훨씬 더 느리고 아마 초당 0.5 줄 밖에되지 않습니다. 스크롤 속도를 제어 할 수있는 방법이 있습니까?

미리 감사드립니다.

폴.

답변

1

당신은 setAnimationCurve:을 찾고 있습니다. 특히 설명하는 것은 UIViewAnimationCurveEaseInOut의 효과입니다. 추가해보기 [UIScrollView setAnimationCurve:UIAnimationCurveLinear];

또한 이전 스타일의 애니메이션 코드를 사용하고 있습니다. 당신은 아이폰 OS 4 이상을 대상으로하는 경우 (제 생각에) 훨씬 더 친절이 새로운 스타일의 체크 아웃 : 지연 매개 변수를 사용

- (void) scrollWords: (NSTimer *) theTimer 
{ 
    offset.y = offset.y+300; 
    [UIScrollView animateWithDuration:50.0f delay:0 options:UIViewAnimationOptionCurveLinear animations:^{ 
     [scroller setContentOffset:offset]; 
    }]; 
} 

을, 당신은 아마 당신의 NSTimer를 제거 할 수 있습니다. 이 코드를 사용하면 5 초 후에 표보기를 스크롤 할 수 있습니다.

- (void) scrollWordsLater 
{ 
    offset.y = offset.y+300; 
    [UIScrollView animateWithDuration:50.0f delay:5.0 options:UIViewAnimationOptionCurveLinear animations:^{ 
     [scroller setContentOffset:offset]; 
    }]; 
} 
+0

대단한 답변입니다. 감사!!! 나는 다른 animationCurves를 사용하는 다른 것을 보지 않을 것이므로 코드 샘플을 사용하도록 전환했다. 해결할 수없는 문제가있는 것 같습니다.이 오류 메시지가 나타납니다. ''animateWithDuration : Delay : options : animations : '에 대한 알려진 클래스 메소드가 없습니다. –

+0

'완료 : NULL '부분! 이제 멋지게 작동합니다! :) 감사! –

+0

다행 이네, StackOverflow에 오신 것을 환영합니다! – wjl