UITableView:scrollToRowAtIndexPath或setContentOffset动画速度

时间:2016-06-04 17:53:07

标签: ios objective-c uitableview uiscrollview

让我说我有10行显示数字1到10.我需要滚动效果,如1到10到1到10 ......我使用scrollToRowAtIndexPathsetContentOffset实现了这一点。问题我想在我应用逻辑停止此递归之前减慢滚动速度。那么有没有办法可以降低scrollToRowAtIndexPath的滚动速度。 ?请不要建议,在这里滚动的decelerationRate都是程序化的,没有用户交互。提前谢谢。

2 个答案:

答案 0 :(得分:1)

只需在里面调用你的scrollToRowAtIndexPath或setContentOffset方法 enter image description here阻止。

查看这些答案以获取更多详细信息:

+(void)animateWithDuration:animations:

Change the speed of setContentOffset:animated:?

答案 1 :(得分:0)

您可以这样做:

[UIView animateWithDuration:durationInSeconds animations:^(void){
    [tableView setContentOffset:offset animated:NO];
}];

您只需要计算偏移量。如果您的行具有相同的高度,则只需计算您的偏移量:

CGPoint offset = CGPointMake(0, indexPath.row * rowHeight);

如果高度不同,那么你需要这样做:

CGFloat offsetY = 0;

for (NSInteger i = 0; i <= indexPath.row; i++) {
    offsetY += [tableView.delegate tableView:tableView heightForRowAtIndexPath:indexPath];
}

CGPoint offset = CGPointMake(0, offsetY);

编辑:

您还可以使用scrollToRowAtIndexPath:animated:方法,在动画块中将animated设置为NO而不是setContentOffset,然后您不必自己计算偏移量