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;//力度



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

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

UIDynamic物理仿真 属性方法解释(一篇就OK)

一、简单介绍 1.什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架,可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象 如:重力、弹性碰撞等现...
  • HDFQQ188816190
  • HDFQQ188816190
  • 2016年06月01日 18:55
  • 1338

ROS数据可视化工具Rviz和三维物理引擎机器人仿真工具V-rep Morse Gazebo Webots USARSimRos等概述

ROS数据可视化工具Rviz和三维物理引擎机器人仿真工具V-rep Morse Gazebo Webots USARSimRos等概述 Rviz是ROS数据可视化工具,可以将类似字符串文本等枯燥的数据...
  • ZhangRelay
  • ZhangRelay
  • 2017年02月15日 12:30
  • 3489

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

附着-UIAttachmentBehavior 物理仿真中的附着行为的实现同之前’捕捉’步骤 1.创建物理仿真器对象 2.创建物理仿真行为对象 3.设置物理仿真行为的属性 4.将仿真行为...
  • Cz090921
  • Cz090921
  • 2016年03月15日 23:40
  • 191

UIDynamic、物理仿真

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

iOS 之物理仿真引擎-UIDynamic简介(二)

一、重力行为 说明:给定重力方向、加速度,让物体朝着重力方向掉落 1.方法 (1)UIGravityBehavior的初始化   - (instancetype)initWithItems:(...
  • codeblshi
  • codeblshi
  • 2014年12月26日 23:26
  • 537

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

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

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

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

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

iOS开发拓展篇—UIDynamic(简单介绍) 【一】简单介绍 1.什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 可以认为是一种物理引...
  • u013457022
  • u013457022
  • 2015年07月31日 12:49
  • 583

iOS 之物理仿真引擎-UIDynamic简介(一)

一、简单介绍 1.什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象 如:重力、弹性...
  • codeblshi
  • codeblshi
  • 2014年12月26日 23:25
  • 425
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UIDynamic 物理仿真
举报原因:
原因补充:

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