UIScrollViewと約20個のアイテム(UIViewControllers)があります。各ページには、これらの20個のアイテム間を移動するのに役立つボタンもあります。したがって、最初のビューで18番目のアイテムに移動するボタンを押すと、スクロールビュー全体がそのビューにスクロールし、スクロール操作をアニメーション化するため、1番目から18番目のアイテムまでのすべてのビューを表示できます。
この長いアニメーションなしで、スクロールビューで1番目から18番目のアイテムにジャンプすることは可能ですか(2つの隣接するアイテム間をスクロールしているようなアニメーションを見たいです)?
このコード行は、この長いスクロールアニメーションを防ぐのに役立つと思いました。
[scrollView scrollRectToVisible:rect animated:NO];
しかし、運はありません。
助言がありますか?
[編集#1]特定のビューにスクロールする方法は次のようになります。
// I found view controller to which I want to scroll
CGRect rect = selectedViewController.view.frame;
float duration; // I calculate animation duration in some way now
[UIView beginAnimations:@"ScrollRectToVisible" context:nil];
[UIView setAnimationCurve:UIViewAnimationTransitionNone];
[scrollView scrollRectToVisible:rect animated:NO];
[UIView commitAnimations];
このコードでは、UIScrollViewで最初のビューから最後のビューにスクロールすると、アプリケーションは最後のビューにスクロールし、そのアニメーションは計算した期間の値の間持続します。そして、最初と最後の間に存在するすべてのビューが表示されます。私の願いは、最初のビューから最後のビューまで、それらの間のすべてのビューを見ずにすぐにスクロールすることです。
crollRectToVisible行を次のように変更すると:
[scrollView scrollRectToVisible:rect animated:YES];
同じことが起こります。今回はスクロールアニメーションが5倍速くなりますが、それでもその間のすべてのビューが表示されます。
メソッドからアニメーションを削除すると、すぐに遷移が発生します。私の質問は、UIScrollViewで隣接するビューにスライドしたときに同じように見える最後のビューにこのアニメーションをどのように実現するかです。