1

トリガーされたタイマーに基づいて UIScrollview を自動的にスクロールするために、うまく機能するコードをいくつか実装しました。

ここにあります:

....
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];

}

ただし、スクロール中にスクロール速度が変化することに気付きました。途中で 1 秒あたり 2 行または 3 行のテキストをスクロールしますが、最初と最後でははるかに遅く、おそらく 1 秒あたり 0.5 行程度です。スクロール速度を制御する方法はありますか?

前もって感謝します。

ポール。

4

1 に答える 1

1

あなたが探してsetAnimationCurve:いる。具体的には、の効果ですUIViewAnimationCurveEaseInOut。追加してみてください[UIScrollView setAnimationCurve:UIAnimationCurveLinear];

また、古いスタイルのアニメーションコードを使用しています。iOS 4以降をターゲットにしている場合は、(私の意見では)はるかに使いやすいこの新しいスタイルを確認してください。

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

delayパラメータを使用すると、NSTimerを取り除くこともできます。このコードを使用すると、5秒後にテーブルビューをスクロールできます。

- (void) scrollWordsLater
{
    offset.y = offset.y+300;
    [UIScrollView animateWithDuration:50.0f delay:5.0 options:UIViewAnimationOptionCurveLinear animations:^{
        [scroller setContentOffset:offset];
    }];
}
于 2013-02-07T19:45:00.250 に答える