0

我有一个很大的滚动视图。我只想在每次按下按钮时以固定的步骤滚动滚动视图。但是,当我编写以下代码时,滚动视图滚动非常锯齿。有人可以解释为什么吗?

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)
                         {
                         }];

我不使用动画:是的争论,因为我需要不同 contentOffsets 之间的自定义滚动速度。

4

5 回答 5

1

当您在使用动画滚动时更新您的 scoolview 内容框架时,就像您尝试更新已经更改的过去的内容......(可能不是最好的解释:D)

在你的动画选项中尝试这个:

options:UIViewAnimationOptionCurveLinear|UIViewAnimationOptionBeginFromCurrentState
于 2013-06-15T08:32:51.597 回答
0

scrollRectToVisible 动画本身就是一个动画。

使用您当前的代码,您正在尝试为动画制作动画。

因此它是生涩的。

只需使用将矩形滚动到可见:

[self.objScrollView scrollRectToVisible:CGRectMake(lstructCurrentPoint.x,lstructCurrentPoint.y,self.objScrollView.bounds.size.width,self.objScrollView.bounds.size.height) animated:YES];
于 2013-06-15T22:36:49.190 回答
0

如果不知道您在滚动视图中有什么内容,没有人可以正确回答您的问题。

但是,您可以自己找出造成这种情况的原因。

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

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

现在 Time Profiler 部分将准确地告诉您什么需要很长时间。修复此问题,您将获得流畅的滚动。

于 2013-06-18T08:04:02.377 回答
0

尝试使用

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

而不是 scrollRectToVisible。

于 2013-06-15T13:09:28.590 回答
0

你为什么不尝试使用

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

而不是在 UIView 动画函数中使用它。

于 2013-06-15T09:29:36.517 回答