UIDynamic 物理仿真

原创 2016年06月02日 00:17:37

UIDynamic中三个重要的类解析:

  • 1.UIDynamicItem:执行仿真动画的对象

  • 2.UIDynamicAnimator:仿真者,仿真器,相当于控制器

  • 3.UIDynamicBehavior: 动画行为方式

    • UIGravityBehavior:重力行为

    • UICollisionBehavior:碰撞行为

    • UISnapBehavior:吸附行为

    • UIPushBehavior:推动行为

    • UIAttachmentBehavior:刚性附着行为

      TIPS:

      • 1.首先创建仿真器(需要用一个强指针引用),指定执行动画的item(遵守UIDnamicItem协议的对象才能做物理仿真,UIView和UICollectionViewAttributes遵守该协议.)

      • 2.创建动画行为,可单独一种,也可多种

      • 3.添加动画行为到仿真器上

         //1.添加重力属性
            UIGravityBehavior *gravity = [[UIGravityBehavior alloc]initWithItems:@[_redView]];
        
            //2.添加碰撞检测
            UICollisionBehavior *collision = [[UICollisionBehavior alloc]initWithItems:@[_redView]];
        
            //3.指定碰撞边界
            collision.translatesReferenceBoundsIntoBoundary = YES;
            //4.添加指定行为到仿真器
            [_animator addBehavior:gravity];
            [_animator addBehavior:collision];

        各种Behavior中的属性:

        • 1.UISnapBehavior:吸附行为

        @property (nonatomic, assign) CGPoint snapPoint NS_AVAILABLE_IOS(9_0);//吸附点
        @property (nonatomic, assign) CGFloat damping;//剧烈程度
        
        • 2.UIPushBehavior:推动行为

        - (instancetype)initWithItems:(NSArray<id <UIDynamicItem>> *)items mode:(UIPushBehaviorMode)mode//初始化时指定推动的模式,分为单次推和持续推
        @property (nonatomic, readwrite) BOOL active;//单次推的模式的时候需要打开
        @property (readwrite, nonatomic) CGFloat angle;//角度
        @property (readwrite, nonatomic) CGFloat magnitude;//力度
        @property (readwrite, nonatomic) CGVector pushDirection;
        
        • 3.UIAttachmentBehavior:刚性附着行为

        - (instancetype)initWithItem:(id <UIDynamicItem>)item offsetFromCenter:(UIOffset)offset attachedToAnchor:(CGPoint)point //offset:偏移的距离
        
        @property (readwrite, nonatomic) CGPoint anchorPoint;//附着点
        @property (readwrite, nonatomic) CGFloat length;
        @property (readwrite, nonatomic) CGFloat damping; // 1: critical damping  振幅
        @property (readwrite, nonatomic) CGFloat frequency; // in Hertz  频率
        @property (readwrite, nonatomic) CGFloat frictionTorque NS_AVAILABLE_IOS(9_0); // default is 0.0
        @property (readwrite, nonatomic) UIFloatRange attachmentRange NS_AVAILABLE_IOS(9_0); // default is UIFloatRangeInfinite
        


        • 4.UICollisionBehavior:碰撞行为

        @property (nonatomic, readwrite) UICollisionBehaviorMode collisionMode; //碰撞模式
        @property (nonatomic, readwrite) BOOL translatesReferenceBoundsIntoBoundary;//是否开启边界碰撞检测
        @property (nullable, nonatomic, weak, readwrite) id <UICollisionBehaviorDelegate> collisionDelegate;// 有自己的代理方法.分别有开始撞击和停止撞击时调用的代理方法
        • 5.UIGravityBehavior:重力检测

        @property (readwrite, nonatomic) CGVector gravityDirection;//重力方向
        @property (readwrite, nonatomic) CGFloat angle;//角度
        @property (readwrite, nonatomic) CGFloat magnitude;//力度



相关文章推荐

UIDynamic、物理仿真

  • 2016年03月11日 23:38
  • 36KB
  • 下载

iOS-UIDynamic物理仿真-附着-UIAttachmentBehavior

附着-UIAttachmentBehavior 物理仿真中的附着行为的实现同之前’捕捉’步骤 1.创建物理仿真器对象 2.创建物理仿真行为对象 3.设置物理仿真行为的属性 4.将仿真行为...

物理仿真UIDynamic 介绍 (吸附行为)(推动行为) (一)

* Dynamic Animator:动画者,为动力学元素提供物理学相关的能力及动画,同时为这些元素提供相关的上下文,是动力学元素与底层iOS物理引擎之间的中介,将Behavior对象添加到Anima...

【iOS开发系列】物理仿真动画UIDynamic (1)

iOS开发拓展篇—UIDynamic(简单介绍) 【一】简单介绍 1.什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 可以认为是一种物理引...

iOS-UIDynamic物理仿真-重力、碰撞

UIDynamicUIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象如:重力、弹性碰撞等现象任何遵守了UIDynamic...

物理仿真中的圆形碰撞

在上一节中发现了个问题,几个球之间的碰撞看似是球与球之间的碰撞,实则是矩形之间的碰撞。这一节就解决这个问题。 UIDynamics 的第一个版本带有碰撞系统只支持矩形。这可以理解,因为UIViews...

iOS-仿膜拜贴纸滚动(物理仿真)

导读 简单用OC写了一个小球滚动效果; 类似平衡球. GitHub地址:https://github.com/wangliujiayou/WLBallView 欢迎Star. ...

iOS物理仿真动画Dynamic Behavior

介绍了一些iOS物理仿真行为的参数和方法

物理仿真-单摆球

GitHub:https://github.com/LearnMoreAndBetter/DynamicDemo 实现单摆球功能 代码调用 1. 添加仿真行为 ...

汉诺塔游戏和物理仿真

GitHub:https://github.com/LearnMoreAndBetter/DynamicDemo /*  汉诺塔游戏规则:    1、将盘子全部移动...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UIDynamic 物理仿真
举报原因:
原因补充:

(最多只允许输入30个字)