利用UIDynamicanimation实现UIView布局弹簧效果

现今多数的分类布局都没有交互功能,我们可以利用苹果提供的UIDynamicanimation这个类,实现交互功能,让界面更加人性化;当然在此也吐槽一下苹果的

UICollisionBehavior类,边界有个小的BUG,当手势滑动穿过边界时,View会穿过碰撞边界;当然,给View添加一个移动范围就能避免这种BUG


在此,主要使用到的物理引擎类有:

UIAttachmentBehavior吸附效果, UISnapBehavior捕捉效果 UICollisionBehavior 碰撞效果;

我们将这个动画封装在一个View中;

详细原理为:

在手势开始时,添加一个碰撞边界;对上面3个小球添加相互间的吸附行为,对下面3个小球添加相互间的吸附行为;

相互间的吸附行为定义好后,再对单个小球添加吸附行为,让另外的3各小球随着小球的移动而移动;

在手势发生变化时,定义anchorPoint,让点击的那个小球随着手势的移动而移动,当然,在此处添加边界,防止穿墙BUG;

最后,当手势结束时,移除所有的动画行为,添加捕捉行为,让小球能够回到原来的位置.

详细代码:

#import "EyeView.h"

@interface EyeView ()
{
    CGFloat ball_wirth;
    CGPoint oldCenterOfBall1;
    CGPoint oldCenterOfBall2;
    CGPoint oldCenterOfBall3;
    CGPoint oldCenterOfBall4;
    CGPoint oldCenterOfBall5;
    CGPoint oldCenterOfBall6;
    
    CGPoint newCenter;
}

@property (strong, nonatomic) UIDynamicAnimator *animation; //新建物理动画

@property (strong, nonatomic) UIAttachmentBehavior *dragBehavior;//吸附行为(通过设置锚点来实现)

@property (strong, nonatomic) UIAttachmentBehavior *attachmentBehavior1;//1,
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值