iOS7中UIKit支持的動力行為之UIAttachmentBehavior – iPhone手機開發技術文章 iPhone軟體開發教學課程

Inherits from UIDynamicBehavior : NSObject
Conforms to NSObject
(NSObject)

Framework /System/Library/Frameworks/UIKit.framework
Availability Available in iOS 7.0 and later.
Declared in UIAttachmentBehavior.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:

        初始化連接動態項目的中心和錨點的吸附行為

        – (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

        吸附行為的類型,說明吸附到的是什麼樣子的動態項目。

        typedef enum {
           UIAttachmentBehaviorTypeItems,
           UIAttachmentBehaviorTypeAnchor
        } UIAttachmentBehaviorType;

        UIAttachmentBehaviorTypeItems:表示連接兩個item的吸附行為

        UIAttachmentBehaviorTypeAnchor:表示連接一個item與錨點的吸附行為

發佈留言