iOS7中UIKit支持的动力行为之UIAttachmentBehavior

来源:互联网 发布:台北北投温泉攻略 知乎 编辑:程序博客网 时间:2024/04/19 17:13

来源:http://www.2cto.com/kf/201401/275889.html



Inherits fromUIDynamicBehavior : NSObjectConforms toNSObject (NSObject)Framework/System/Library/Frameworks/UIKit.frameworkAvailabilityAvailable in iOS 7.0 and later.Declared inUIAttachmentBehavior.h概述 吸附行为规定了两种动力item之间或者一个动力item与一个锚点之间的动态连接,默认情况下,两个item之间的吸附点是他们的中点,不过这个是可以设置的。
动力item可以是任何符合UIDynamicItem协议的iOS对象或者自定义对象,UIView和UICollectionViewLayoutAttributes类在iOS7.0才开始实现这个协议。你可以用一个自定义对象作为动力item,这个动力item能够对旋转或位置的改变作出反应,这些都是由一个动力动画制作者(UIDynamicAnimator类的实例)来计算的。 
当一个动力item移动的时候,通过跟踪手势或其他输入方式,任何被吸附的动力item都要移动。如果可能,还可以给这些被吸附的动力item设置另外的动力参数和边界。你可以使用length、damping和frequency属性设置吸附行为。 
若要实现动力item的吸附行为,要执行以下两个步骤: 1.用一个或者两个item初始化吸附行为, 初始化方法是initWithItem:... 2.通过使用addBehavior:method将它添加到动画中去 吸附行为还与坐标系统有关,你可以和行为一起用的动力items的类型,取决于你怎么初始化相关的动画。 
你也能在自定义的复合行为中包含吸附行为,这个复合行为要以UIDynamicBehavior对象开始,用addChildBehavior:method添加吸附行为。如果你想吸附行为在每一步动力动画上都很流畅的话,就要实现继承的action方法。 
方法 
初始化和管理吸附行为 
参数:items

  • – initWithItem:attachedToAnchor:
  • – initWithItem:attachedToItem:
  • – initWithItem:offsetFromCenter:attachedToAnchor:
  • – initWithItem:offsetFromCenter:attachedToItem:offsetFromCenter:

    • 配置吸附行为
      • anchorPoint property
      • attachedBehaviorType property
      • damping property
      • frequency property
      • length property

      • 属性 
        anchorPoint: UIAttachmentBehaviorTypeAnchor类型的依赖行为的锚点,锚点与行为相关的动力动画的坐标系统有关。 @property(readwrite, nonatomic) CGPoint anchorPoint

        attachedBehaviorType: 吸附行为的类型 @property(readonly, nonatomic) UIAttachmentBehaviorType attachedBehaviorType damping: 描述吸附行为减弱的阻力大小 @property(readwrite, nonatomic) CGFloat damping

        frequency: 吸附行为震荡的频率 @property(readwrite, nonatomic) CGFloat frequency

        items: 与吸附行为相连的动态项目,当吸附行为类型是UIAttachmentBehaviorTypeItems时有2个元素,当吸附行为类型是UIAttachmentBehaviorTypeAnchor时只有一个元素。@property(nonatomic, readonly, copy) NSArray *items

        length: 吸附行为中的两个吸附点之间的距离,通常用这个属性来调整吸附的长度,可以创建吸附行为之后调用。系统基于你创建吸附行为的方法来自动初始化这个长度 @property(readwrite, nonatomic) CGFloat length 

        方法举例 
        initWithItem:attachedToAnchor: 初始化连接动力item的中心和锚点的吸附行为 - (instancetype)initWithItem:(id)item attachedToAnchor:(CGPoint)point
        参数:item是你要应用吸附行为的动力项,point是吸附行为的锚点,与跟行为相关的动态动画所在在系统坐标有关。 返回:初始化的attachment behavior,如果初始化过程出错将会返回nil。 该初始化方法的吸附行为的类型是UIAttachmentBehaviorTypeAnchor

        initWithItem:attachedToItem:

        初始化连接两个动力项中心的吸附行为
        - (instancetype)initWithItem:(id)item1 attachedToItem:(id)item2
        参数:item1第一个被吸附行为连接的动力项,item2第二个被吸附行为连接的动力项 返回:初始化的attachment behavior,如果初始化过程出错将会返回nil。 该初始化方法的吸附行为的类型是UIAttachmentBehaviorTypeItems

        initWithItem:offsetFromCenter:attachedToAnchor:

        初始化连接动力项中某一点和锚点的吸附行为
        - (instancetype)initWithItem:(id)item offsetFromCenter:(UIOffset)p1 attachedToAnchor:(CGPoint)point
        参数:item要应用吸附行为的动力项,p1相对于item中心的偏移,point是吸附行为的锚点,与跟行为相关的动力动画所在在系统坐标有关。 返回:初始化的attachment behavior,如果初始化过程出错将会返回nil。 该初始化方法的吸附行为的类型是UIAttachmentBehaviorTypeAnchor

        initWithItem:offsetFromCenter:attachedToItem:offsetFromCenter:

        初始化连接一个动力item中某一点和另一个动力item中某一点的吸附行为
        - (instancetype)initWithItem:(id)item1 offsetFromCenter:(UIOffset)p1 attachedToItem:(id)item2 offsetFromCenter:(UIOffset)p2
        参数:item1第一个被吸附行为连接的动力项,p1相对于item1中心的偏移,item2第二个被吸附行为连接的动力项,p2相对于item2中心的偏移 返回:返回:初始化的attachment behavior,如果初始化过程出错将会返回nil。 这是为UIAttachmentBehavior类指定的初始化程序。 
        常量

        UIAttachmentBehaviorType

        吸附行为的类型,说明吸附到的是什么样子的动力项。
        ?
        1
        2
        3
        4
        typedefenum{
           UIAttachmentBehaviorTypeItems,
           UIAttachmentBehaviorTypeAnchor
        } UIAttachmentBehaviorType;
        UIAttachmentBehaviorTypeItems:表示连接两个item的吸附行为
        UIAttachmentBehaviorTypeAnchor:表示连接一个item与锚点的吸附行为

0 0
原创粉丝点击