动画视图并中途停止
Posted
技术标签:
【中文标题】动画视图并中途停止【英文标题】:Animate view and stop midway 【发布时间】:2018-03-29 08:50:38 【问题描述】:我想制作一个视图/标题折叠/展开动画,但我也希望能够在用户将手指从屏幕上移开时暂停或停止展开/折叠。
我有一个当前的实现,但是动画不是很流畅。
我还会添加一些图片来更好地解释我想要做什么。
所以第一张图片是展开后的样子。
第二张图片是当用户决定将手指从屏幕上移开时的外观,同时他将缓慢滚动,因此动画/视图应该停止在与此类似的状态。
第三张图片是折叠后的样子。
如果有人对我如何实现这一点有任何建议,我将不胜感激。
【问题讨论】:
显示你已有的代码 我已经拥有的代码需要完全替换。它是由另一个开发人员制作的,它是由一些工具生成的。我想从头开始 【参考方案1】:如果您的目标是 ios 10+,请使用 UIViewPropertyAnimator
封装动画并允许擦洗和控制动画:
开始、暂停、恢复和停止动画;请参阅
UIViewAnimating
协议的方法。在原始动画开始后使用
addAnimations(_:)
和addAnimations(_:delayFactor:)
方法添加动画块。通过修改
fractionComplete
属性来清理暂停的动画。使用
isReversed
属性更改动画的方向。通过暂停动画并使用
continueAnimation(withTimingParameters:durationFactor:)
方法完成它来修改部分完成动画的时间和持续时间。
您只需将触摸连接到封装动画的UIViewPropertyAnimator
对象。
有很多关于如何开始使用它的好教程,例如this one.
【讨论】:
我很想用这个,只是看了关于这个的 wwdc 视频,但我不确定如果用户拿开手指,我是否可以让视图保持在第二张图片中的状态从屏幕上。当手指不在屏幕上时,视图不会进入完全展开/折叠状态吗? @razvan 这取决于你如何实现它。我相信这是要走的路。当然你必须处理这些案例并定义你希望它的行为方式,但是@987654331 @ 将允许您这样做 好的,谢谢。我会尝试使用 UIViewPropertyAnimator以上是关于动画视图并中途停止的主要内容,如果未能解决你的问题,请参考以下文章