首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改setContentOffset:animated:?的速度

更改setContentOffset:animated:?的速度
EN

Stack Overflow用户
提问于 2010-12-10 09:06:18
回答 16查看 41.6K关注 0票数 44

当使用setContentOffset:UITableView:来滚动动画时,有没有办法改变动画的速度?我想把它滚动到顶端,但要慢一点。当我尝试以下操作时,它会导致底部的几个单元格在动画开始之前消失(特别是在滚动完成时看不到的单元格):

代码语言:javascript
复制
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:3.0];
[self.tableView setContentOffset:CGPointMake(0, 0)];
[UIView commitAnimations];

有没有别的办法来解决这个问题?有一个有效的私有方法_setContentOffsetAnimationDuration,但我不想被应用商店拒绝。

EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2010-12-10 09:19:56

没有直接的方法可以做到这一点,也没有你写的方式。我能做到这一点的唯一方法是自己制作运动/动画。

例如,每1/10秒移动1px应该会模拟一个非常慢的滚动动画。(因为它是线性动画,所以数学很简单!)

如果你想获得更真实或更花哨的效果,并模拟easy-in easy-off效果,那么你需要一些数学计算来计算bezier路径,这样你就可以知道每1/10秒的确切位置

至少第一种方法不应该那么困难。只需将或-performSelector:withObject:afterDelay or NSTimers用于

代码语言:javascript
复制
-[UIScrollView setContentOffset:(CGPoint*)];`

希望能有所帮助

票数 10
EN

Stack Overflow用户

发布于 2012-02-02 11:46:54

代码语言:javascript
复制
[UIView animateWithDuration:2.0 animations:^{
    scrollView.contentOffset = CGPointMake(x, y);
}];

它起作用了。

票数 91
EN

Stack Overflow用户

发布于 2017-06-06 02:53:38

直接设置内容偏移量对我不起作用。但是,将setContentOffset(offset, animated: false)包装在动画块中可以做到这一点。

代码语言:javascript
复制
UIView.animate(withDuration: 0.5, animations: {
                self.tableView.setContentOffset(
               CGPoint(x: 0, y: yOffset), animated: false)
            })
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4404745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档