Ios UITableView:ScrollToRowatineXpath或setContentOffset动画速度

Ios UITableView:ScrollToRowatineXpath或setContentOffset动画速度,ios,objective-c,uitableview,uiscrollview,Ios,Objective C,Uitableview,Uiscrollview,假设我有10行显示数字1到10。我需要像1到10到1到10的滚动效果。。。我使用ScrollToRowatineXpath和setContentOffset实现了这一点。在我应用逻辑停止这个递归之前,我想减慢滚动的速度。那么,有没有一种方法可以降低scrollToRowAtIndexPath的滚动速度呢。 ? 请不要建议,减速率,因为这里的滚动都是编程的,没有用户交互。提前感谢。只需调用您的ScrollToRowatinexPath或setContentOffset方法即可 街区 查看这些答案以

假设我有10行显示数字1到10。我需要像1到10到1到10的滚动效果。。。我使用
ScrollToRowatineXpath
setContentOffset
实现了这一点。在我应用逻辑停止这个递归之前,我想减慢滚动的速度。那么,有没有一种方法可以降低
scrollToRowAtIndexPath
的滚动速度呢。
? 请不要建议,减速率,因为这里的滚动都是编程的,没有用户交互。提前感谢。

只需调用您的ScrollToRowatinexPath或setContentOffset方法即可 街区

查看这些答案以了解更多详细信息:


您可以这样做:

[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);
CGFloat offsetY=0;

对于(NSInteger i=0;听起来不错。你的意思是,一旦我决定放慢速度,我就从循环滚动递归逻辑中出来,执行上述操作,以达到预期的行,从而产生缓慢滚动效果吗?是的,这是为了减缓滚动速度,你可以在animateWithDuration方法中使用'durationInSeconds'参数设置持续时间。如Alex sugge所述在另一个答案中,您也可以使用ScrollToRowatineXpath:animated:method,将动画块中的animated设置为NO,而不是setContentOffset,这样您就不必自己计算偏移量了。是的,尝试过了。行得通。