仿真动画

2017-09-14  本文已影响0人  LucXion

标签:弹性附着行为、刚性附着行为、碰撞边缘检测、推动行为、吸附行为、重力行为
1 重力行为

-(void)重力行为UIGravityBehavior{
//在当前View中强引用动画者属性,创建动 画者(动力学元素 和 iOS物理引擎的中介),参考对象参数表示在谁里面开启了这个环境(这个环境是没有范围的).
    self.dynamicAnimator = [[UIDynamicAnimator alloc]initWithReferenceView:self.view]; 
//根据动力学元素创建行为,参数是一个数组
    UIGravityBehavior *gravityBehavior = [[UIGravityBehavior alloc]initWithItems:@[self.greenView]];
//将行为添加到动画者身上
    [self.dynamicAnimator addBehavior:gravityBehavior];
}

2 碰撞边缘检测

-(void)碰撞边缘检测UICollisionBehavior{
    //在开启动画者前提下
   //创建行为
    UICollisionBehavior *collisionBehavior = [[UICollisionBehavior alloc]initWithItems:@[self.greenView]];
//注意开启碰撞边缘检测    
    collisionBehavior.translatesReferenceBoundsIntoBoundary = YES;
//将边缘检测添加到动画者
    [self.dynamicAnimator addBehavior:collisionBehavior];
}

3 吸附行为

-(void)吸附行为UISnapBehavior{
//吸附行为自带一个类似刹车的效果
//如果要进行连续多次的吸附行为,每一次开头都必须清除上一次的吸附行为
    [self.dynamicAnimator removeBehavior:self.snapBehavior];
//动力学对象的中心点将移动到该指定的点中
    UISnapBehavior *snapBehavior = [[UISnapBehavior alloc]initWithItem:self.greenView snapToPoint:CGPointMake(1, 1)]; 
    [self.dynamicAnimator addBehavior:snapBehavior];
    self.snapBehavior = snapBehavior;
}

4 推动行为

-(void)推动行为UIPushBehavior{
    UIPushBehavior *pushBehavior = [[UIPushBehavior alloc]initWithItems:@[self.greenView] mode:UIPushBehaviorModeInstantaneous];
    //角度  三角形锐角 : tan(相对直角边,相邻直角边)  sin(相对直角边,相邻斜边)
    pushBehavior.angle = 0;
  //力度
    pushBehavior.magnitude = 10;
    [self.dynamicAnimator addBehavior:pushBehavior];
}

5 刚性附着行为

-(void)刚性附着行为UIAttachmentBehavior{
//刚性附着行为的创建方法有很多,这里设置的点只是确定动作力元素(默认是当前位置的中心点)与附着点的距离.
    //offer : 偏离中心点的距离
    //两个元素,元素与元素的附着
    UIAttachmentBehavior *attachmentBehavior = [[UIAttachmentBehavior alloc]initWithItem:self.greenView attachedToAnchor:CGPointMake(9, 9)];
   //通过附着点位置的更改,使动作力元素的位置改变,距离确定,方向却不一定相同
    attachmentBehavior.anchorPoint = CGPointMake(1, 1);
}

6 弹性附着行为

-(void)弹性附着行为UIAttachmentBehavior{
//在刚性附着行为上增加设置两个属性
    /*
     开启晃动
     self.myAttach.damping = 1.0;
     频率
     self.myAttach.frequency = 0.8;
     //注意,要在对象重力行为下才会晃动(或者说拖拽中?)
     */
}
上一篇下一篇

猜你喜欢

热点阅读