5.1 iOS UIDynamic

作者: 刘2傻 | 来源:发表于2016-12-31 13:07 被阅读31次

    1.1UIDynamic概述

    UIKit动力学(Dynamic)最大的特点是将现实世界中动力驱动的动画引入了UIKit,比如中立,碰撞,推动等效果.即将2D物理引擎引入了UIKit.UIKit动力学的引入,并不是为了替代CA或者UIView动画,在绝大多数情况下CA或者UIView动画仍然是最有方案,只有在需要引入逼真的交互设计时候,才需要使用UIKit动力学他是作为现有交互设计和实现的一种补充.

    (一)UIDynamic是什么

    UIDynamic是从iOS7.0引入的一种新技术,隶属于UIKit框架,能够模拟现实生活中的物理现象如:重力,弹性碰撞等现象,是一种物理引擎.

    物理引擎的价值:让开发人员在远离物理学公式的情况下,实现炫酷的物理仿真效果.经典案例:愤怒的小鸟.

    (二)UIDynamic重要的概念

    UIDynamic中的三个重要概念:

    1.Dynamic Animator动画者,
    2.Dynamic Animator Item动力学元素,
    3.Dynamic Behavior仿真行为.
    

    谁(动力学元素) 在哪(由动画者指定区域) 做什么事情(仿真行为).

    1.>Dynamic Animator动画者:为动力学元素提供物理学相关的能力及动画,同时为这些元素提供相关的上下文,是动力学院素与底层iOS物理引擎之间的中介,将Behvior对象添加到Animator即可实现动力仿真.(让物理仿真元素在指定的区域执行具体的仿真行为相当于操场.)
    2.>Dynamic Animator Item动力学元素:动力学元素,是任何遵守了UIDynamicItem协议的对象,从iOS7.0开始,UIView和UICollectionViewLayoutAttributes默认实现了该协议.如果自定义的对象实现了该协议,即可通过Dynamic Animator实现物理仿真.(谁要物理仿真?相当于学生)
    3.>UIDynamicBehavior仿真行为:仿真行为,是动力学行为的父类
    (执行怎样的物理仿真行为?相当跑步)

    (三)仿真行为分类

    • UIGravityBehavior 重力行为
    • UICollisionBehavior 碰撞行为
    • UISnapBehavior 捕捉行为
    • UIPushBehavior 推动行为
    • UIAttachmentBehavior 附着行为
    • UIDynamicItemBehavior 动力学元素行为

    以上所有的行为都是UIDynamicBehavior的子类,所有的行为都可以单独使用,也可以组合多种行为,实现复杂的物理效果.

    UIDynamicBehavior常用属性和方法

    // 所有子行为
    @property (nonatomic, readonly, copy) NSArray<__kindof UIDynamicBehavior *> *childBehaviors;
    
    // When running, the dynamic animator calls the action block on every animation step.
    // 用来监听仿真行为(仿真行为每进行一步物理引擎就会调用这个block)
    @property (nullable, nonatomic,copy) void (^action)(void);
    // 添加一个子行为
    - (void)addChildBehavior:(UIDynamicBehavior *)behavior;
    // 移除一个子行为
    - (void)removeChildBehavior:(UIDynamicBehavior *)behavior;
    
    

    相关文章

      网友评论

        本文标题:5.1 iOS UIDynamic

        本文链接:https://www.haomeiwen.com/subject/luwvvttx.html