以编程方式滑动 UIScrollView

Posted

技术标签:

【中文标题】以编程方式滑动 UIScrollView【英文标题】:Flick a UIScrollView programmatically 【发布时间】:2015-08-23 08:10:28 【问题描述】:

当用户在 UIScrollView 上做出轻弹手势时,UIScrollView 会获得动力并开始移动,然后减速并最终停止。 但是我怎样才能以编程方式实现这一点呢?我的意思是不用手指轻弹,UIScrollView 就会自动开始移动,然后减速到 0 的速度。

在我的应用程序中,我的 UIScrollView 与普通的 UIScrollView 不同(比如说它看起来像一个滚轮),所以我想向用户提示他可以滚动它(然后一切都开始了!)

我用谷歌搜索了很多,但似乎没有办法解决我的问题。 setContentOffset 无法产生自然的“减速并停在前方某处”的效果。

任何想法都将不胜感激。

提前致谢。

【问题讨论】:

嘿,我不明白,你想为 UIscrollView 创建自定义滚动动画吗? 不,我不想为 UIScrollView 创建自定义滚动动画,但希望 UIScrollView 自动滚动,就像用手指轻弹一样。假设滚动视图最初是静止的,然后它突然开始移动,就像有人在上面做了一个轻弹手势但没有人这样做,然后它自然减慢并最终停在某个地方。 试试我的代码,可能对你有帮助。 【参考方案1】:

试试,类似这样的>

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDelegate:self];
[UIView setAnimationDelay:.8];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
[UIView setAnimationDuration:(abs(1-3)*0.3)];
self.myScroll.contentOffset = CGPointMake(0, 500);
[UIView commitAnimations]; 

目前不是你需要的,但是你可以自定义这段代码,可能都可以)


或使用此代码>

[UIView animateWithDuration:2.
                      delay:0.3
     usingSpringWithDamping:1.
      initialSpringVelocity:7.
                    options:UIViewAnimationOptionCurveEaseInOut animations:^
                        //Animations
                        self.myScroll.contentOffset = CGPointMake(0, 500);
                    
                 completion:^(BOOL finished) 
                     //Completion Block
                 ];

我认为它就像你想要的(带有滑动效果的阻尼动画)

【讨论】:

它对我有用!非常感谢您的精彩分享! ;)

以上是关于以编程方式滑动 UIScrollView的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式滑动 UIScrollView

以编程方式切换视图时iphone tableviewcontroller左/右滑动?

如何使用现有 UIPageViewController 的按钮以编程方式滑动视图

以编程方式滑动 UISlider

如何通过在 ViewPager 中用手指滑动来禁用分页但仍然能够以编程方式滑动?

iOS 13 Modals - 以编程方式调用滑动解除