当使用setContentOffset:UITableView:来滚动动画时,有没有办法改变动画的速度?我想把它滚动到顶端,但要慢一点。当我尝试以下操作时,它会导致底部的几个单元格在动画开始之前消失(特别是在滚动完成时看不到的单元格):
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:3.0];
[self.tableView setContentOffset:CGPointMake(0, 0)];
[UIView commitAnimations];有没有别的办法来解决这个问题?有一个有效的私有方法_setContentOffsetAnimationDuration,但我不想被应用商店拒绝。
发布于 2010-12-10 09:19:56
没有直接的方法可以做到这一点,也没有你写的方式。我能做到这一点的唯一方法是自己制作运动/动画。
例如,每1/10秒移动1px应该会模拟一个非常慢的滚动动画。(因为它是线性动画,所以数学很简单!)
如果你想获得更真实或更花哨的效果,并模拟easy-in easy-off效果,那么你需要一些数学计算来计算bezier路径,这样你就可以知道每1/10秒的确切位置
至少第一种方法不应该那么困难。只需将或-performSelector:withObject:afterDelay or NSTimers用于
-[UIScrollView setContentOffset:(CGPoint*)];`希望能有所帮助
发布于 2012-02-02 11:46:54
[UIView animateWithDuration:2.0 animations:^{
scrollView.contentOffset = CGPointMake(x, y);
}];它起作用了。
发布于 2017-06-06 02:53:38
直接设置内容偏移量对我不起作用。但是,将setContentOffset(offset, animated: false)包装在动画块中可以做到这一点。
UIView.animate(withDuration: 0.5, animations: {
self.tableView.setContentOffset(
CGPoint(x: 0, y: yOffset), animated: false)
})https://stackoverflow.com/questions/4404745
复制相似问题