0

我有一个自动滚动的 UITableView setContentOffset。像这样:

 CGFloat point = self.table.tblMinutes.contentSize.height - self.table.tblMinutes.bounds.size.height;

    [self.table.tblMinutes setContentOffset:CGPointMake(0, point) animated:false];
    [self.table.tblMinutes layoutIfNeeded];

    [UIView animateWithDuration:20.0 delay:0 options:UIViewAnimationOptionCurveLinear animations:^{
        [self.table.tblMinutes setContentOffset:CGPointMake(0, point - 500) animated:false];
    } completion:nil];

我想要实现的是滚动平稳地减速和停止。我无法做到这一点。

调用[self.table.tblMinutes.layer removeAllAnimations]会停止动画,但由于某种原因移动了 contentOffset,没有达到我想要的效果。

我尝试UIViewAnimationOptionBeginFromCurrentState在动画中使用该选项,但什么也没做。

有什么建议么?

4

2 回答 2

2

这是中断现有动画并将其替换为不同动画的经典问题的一个子集。

这里的问题是,如果您只是删除现有动画,您将跳到该动画的末尾。

解决方案是在移除现有动画之前咨询表示层并将层设置到该位置。现在您从中游开始,可以应用另一个动画。

于 2015-11-17T21:37:48.587 回答
0

看看Kyle Truscott 的关于 UIScrollView的优秀博客文章。UITableView 继承自 UIScrollView,所以理论上它应该可以工作。

于 2015-11-17T21:23:11.223 回答