我有 UIScrollView 和大约 20 个项目(UIViewControllers)。我在每个页面上都有按钮,可以帮助我在这 20 个项目之间跳转。因此,如果我在第一次查看时,按下按钮将我带到第 18 项,整个滚动视图正在滚动到该视图并动画滚动操作,因此我能够看到第 1 项和第 18 项之间的所有视图。
如果没有这个长动画,是否可以在滚动视图中从第 1 项跳转到第 18 项(我希望看到动画,就像我在两个相邻项之间滚动一样)?
我认为这行代码将帮助我防止这种长滚动动画:
[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 中的相邻视图时看起来相同?