停止 UITableView 自动滚动
Stop a UITableView from automatically scrolling
我有一个使用 setContentOffset
自动滚动的 UITableView。像这样:
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
选项,但没有任何作用。
有什么建议吗?
查看有关 UIScrollView 的 Kyle Truscott's excellent blog post。 UITableView继承自UIScrollView,所以理论上应该可以。
这是中断现有动画并将其替换为不同动画的经典问题的子集。
这里的问题是,如果您只是删除现有动画,您将跳到该动画的末尾。
解决方案是参考 表示层 并在删除现有动画之前将层设置到该位置。 现在您从中途开始,可以应用另一个动画。
我有一个使用 setContentOffset
自动滚动的 UITableView。像这样:
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
选项,但没有任何作用。
有什么建议吗?
查看有关 UIScrollView 的 Kyle Truscott's excellent blog post。 UITableView继承自UIScrollView,所以理论上应该可以。
这是中断现有动画并将其替换为不同动画的经典问题的子集。
这里的问题是,如果您只是删除现有动画,您将跳到该动画的末尾。
解决方案是参考 表示层 并在删除现有动画之前将层设置到该位置。 现在您从中途开始,可以应用另一个动画。