Ios UIScrollView快速滚动

Ios UIScrollView快速滚动,ios,ios5,ios6,uiscrollview,uiviewanimation,Ios,Ios5,Ios6,Uiscrollview,Uiviewanimation,我有一个大卷轴视图。我只想在滚动视图中滚动,每次按下按钮都有固定的步骤。但是,当我编写下面的代码时,滚动视图滚动非常不规则。有人能解释一下原因吗 CGPoint lstructCurrentPoint = self.objScrollView.contentOffset; lstructCurrentPoint.x += 400; [UIView animateWithDuration:1.0f delay:0.0f

我有一个大卷轴视图。我只想在滚动视图中滚动,每次按下按钮都有固定的步骤。但是,当我编写下面的代码时,滚动视图滚动非常不规则。有人能解释一下原因吗

CGPoint lstructCurrentPoint = self.objScrollView.contentOffset;
lstructCurrentPoint.x += 400;

        [UIView animateWithDuration:1.0f
                              delay:0.0f
                            options:UIViewAnimationOptionCurveLinear
                         animations:^{
                             [self.objScrollView scrollRectToVisible:CGRectMake(lstructCurrentPoint.x,
                                                                                lstructCurrentPoint.y,
                                                                                self.objScrollView.bounds.size.width,
                                                                                self.objScrollView.bounds.size.height)
                                                            animated:NO];
                        } completion:^(BOOL finished)
                         {
                         }];

我不使用“动画:是”参数,因为我需要在不同的内容偏移量之间自定义滚动速度。

在使用动画滚动时更新scroolview内容帧就像尝试更新过去已更改的内容一样。。。(可能不是最好的解释:D)

尝试在动画选项中使用此选项:

options:UIViewAnimationOptionCurveLinear|UIViewAnimationOptionBeginFromCurrentState

你为什么不试着用它呢

[self.objScrollView scrollRectToVisible:CGRectMake(lstructCurrentPoint.x, lstructCurrentPoint.y,self.objScrollView.bounds.size.width,self.objScrollView.bounds.size.height) animated:YES];
不要在UIView动画功能中使用此选项。

尝试使用

[self.objScrollView setContentOffset: CGPointMame(lstructCurrentPoint.x, lstructCurrentPoint.y) animated: YES];

而不是scrollRectToVisible。

scrollRectToVisible动画本身就是一个动画

使用当前代码,您将尝试设置动画动画

因此它是干的

只需使用将rect滚动至可见:

[self.objScrollView scrollRectToVisible:CGRectMake(lstructCurrentPoint.x,lstructCurrentPoint.y,self.objScrollView.bounds.size.width,self.objScrollView.bounds.size.height) animated:YES];

如果不知道您在scrollView中有什么内容,任何人都无法正确回答您的问题

但是,您可以自己找出原因

在您的设备上配置应用程序。这将打开仪器。选择核心动画工具

当应用程序运行时,滚动视图,以便仪器捕获数据


现在,时间分析器部分将确切地告诉您什么需要很长时间。修复此问题,您将获得平滑滚动。

我将动画参数设置为否。因此,我认为动画中的动画不是这种情况。此外,我还需要为动画设置自定义时间,因此我不希望将动画参数设置为“是”,因为这只能以两种速度滚动内容。在这种情况下,我会尝试这样做:计算要显示的rect的contentOffset,将contentOffset设置为rect的原点(或者希望原点位于scrollView的可见矩形中的任何位置)在animationWithDuration块中。我不希望使用动画:是。这就是我使用UiView动画方法的全部原因。我不使用动画:是,因为我有一个滚动视图,我希望以不同的速率滚动到不同的内容偏移量。默认的滚动视图动画只能以两种速度进行。我希望指定y不同的速度用于移动到不同的内容偏移量。您能更好地解释您得到的行为吗?请查看此位置的ScrollView Programatic Scroll项目。在该项目上,您可以看到非常平滑的滚动,滑块值接近60。但任何像200+的情况都会使滚动抖动。(dropbox.com/sh/rdldvliuio6ebrg/OTjUJFj_rl)请在这个位置查看ScrollView Programatic Scroll项目。我已经尝试了仪器和时间分析器,但我似乎不明白是什么原因造成的。实际上,在这个项目上,你可以看到非常平滑的滚动,滑块值接近60。但是像200+这样的任何东西都会使滚动抖动。链接嗯…很难说,因为我知道我没有iPad可供测试。虽然时间分析器正在标记行
[UIImage imageWithContentsOfFilePath:path]
。您可以缓存该图像而不是每次调用它吗?另外,该图像的显示大小是否正确,或者是否正在调整大小?1.您可以在模拟器上尝试此操作。这与在设备或模拟器上的行为相同。2.未调整图像大小。3。[UIImage imageWithContentsOfFilePath:path]此函数不会影响任何内容,因为我已尝试执行[UiImage ImageName]事情也是如此。4.映像没有被调整大小。1.我在模拟器上运行。但是,模拟器的速度比iPad快很多倍。3.无论采用哪种方法,每次都从磁盘加载映像。如果需要多次,请将UIImage存储在属性或NSArray中。这样,您可以缓存映像,而不是从磁盘加载映像每次都是。试了你的建议。我加载了一次磁贴,然后到处重复使用相同的磁贴。结果是一样的。事实上,我不认为这是由图像或磁贴造成的。