仿iphone原生短信滑动时惯性效果

来源:互联网 发布:撒贝宁智商知乎 编辑:程序博客网 时间:2024/06/01 09:57

如果又细心的朋友会发现,iphone的自带短信息的信息列表在拖拽滑动的时候,每一个cell会有惯性的动画效果,这个我也是从网上找到一些资料,最后知道早在2013年苹果就对这个进行了设计,大家看看这个https://onevcat.com/2013/09/spring-list-like-ios7-message/,这个是喵神(王巍)在2013年的时候写的文章,里面详细讲述了UIKit DyaDynamic的由来以及使用方式.

DyaDynamic主要是用来描述对象的力学性质的,比如我们的cell是一个view(可以看成一个有质量,有大小的物体),用DyaDynamic来修饰这个cell就会有很多一般很难实现的动画效果的展示,比如重力,推力,拉力,碰撞等等

DyaDynamic的核心类有以下几个:

UIDynamicItem:用来描述一个物体的力学特性,是一个协议,只要遵守了这个协议的对象,就可以添加力学特性了.

UIDynamicBehavior:动力行为的描述,用来添加到"实体"上的受力类型,是一个基类,我们一般使用它的子类.

UIDynamicAnimator:动画播放者,之前说的虽然我们给对象添加了力学特性,但是毕竟都是虚拟的,所谓的力学特性只不过是我们肉眼看到的动画效果,所以需要一个动画来播放这些特效,将力学行为添加到这个动画里面就会"看到"力学特性了.

RefernceView:参考对象,一切物体的运动都是相对的,我们说的汽车的行驶速度是相对于地面而言的,这时候地面就是参考对象,我们要描述一个物体的力学运动必须要有一个参考

上面是DyaDynamic这个框架下面的主要的一个类,下面介绍一下UIDynamicBehavior的几个主要的子类:

UIGravityBehavior:重力行为,来给对象添加一个重力的效果

UICollisionBehavior:碰撞行为

UIPushBehavior:给对象添加一个力的作用,可以是持续的力,也可以是瞬间的力(冲量)

UIAttachmentBehavior:让对象的质心跟随手指的移动而移动

UISnapBehavior:吸附行为,像磁铁一样把物体吸附到你指定的点

下面附上我的一个范例,这个是我根据喵神范例写的swift版的,如果想要OC版本的请通过上面给的网址前往

iphone短信列表惯性效果范例https://github.com/butterflyXX/IphoneMessageEffects

这个例子还是和原生的效果有很多不同,首先原生的效果看起来更加的舒服,喵神这个例子在拖拽后会有很长时间的晃动,之后才会完全停止,体验并不是很好,如果有好的解决方式,请分享一下,谢谢

QQ:1459709117

Email:liuxiaochen1991@icloud.com

0 0
原创粉丝点击