效果gif如下
这个动画是仿了一元进宝的个人头像拖动动画,只不过比一元进宝的动画多了一个粘附行为
在学习本篇文章之前,你得先了解一下内容
1.pan平移手势
2.iOS的动力框架行为(若有不了解的可以查看之前我的那一篇博客)
3.runtime关联的用法(动态为一个类添加属性)
这个动画封装成UIView的类目,你只需要在已经添加到俯视图的uiview上,调用类目里头的makeDraggable方法,便可以实现该动画,使用简便
因不是本人原创动画,在这里我们只是为大家讲解一下runtime的关联用法
假设我们要为UIView添加一个jx_centerPoint的属性,那么我们将这样写
1.导入
#import <objc/runtime.h>
2.设置setter和getter方法
- (void)setJx_centerPoint:(CGPoint)point {
objc_setAssociatedObject(self, @selector(jx_centerPoint), [NSValue valueWithCGPoint:point], OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
- (CGPoint)jx_centerPoint {
return [objc_getAssociatedObject(self, @selector(jx_centerPoint)) CGPointValue];
}
在设置了setter和getter方法之后那你将直接通过点语法获得这一个属性
最后为大家讲解动画的组成.
1.一个拖曳手势
2.拖曳手势执行后,添加一个粘附行为,粘附点就是手指所在的屏幕位置.
3.拖曳手势结束或者取消后添加一个snap行为,快速移动的行为,可以设置弹簧效果
这个开源项目可以在github上面下载
下载地址是