Ios UITableView:ScrollToRowatineXpath或setContentOffset动画速度
假设我有10行显示数字1到10。我需要像1到10到1到10的滚动效果。。。我使用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方法即可 街区 查看这些答案以
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,这样您就不必自己计算偏移量了。是的,尝试过了。行得通。