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


Inherits from
Conforms to
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

配置吸附行为
属性

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<UIDynamicItem>)item attachedToAnchor:(CGPoint)point
参数:item是你要应用吸附行为的动态项目,point是吸附行为的锚点,与跟行为相关的动态动画所在在系统坐标有关。
返回:初始化的attachment behavior,如果初始化过程出错将会返回nil。
该初始化方法的吸附行为的类型是UIAttachmentBehaviorTypeAnchor

initWithItem:attachedToItem:

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

initWithItem:offsetFromCenter:attachedToAnchor:

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

initWithItem:offsetFromCenter:attachedToItem:offsetFromCenter:

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

常量

UIAttachmentBehaviorType

吸附行为的类型,说明吸附到的是什么样子的动态项目。
typedef enum {
   UIAttachmentBehaviorTypeItems,
   UIAttachmentBehaviorTypeAnchor
} UIAttachmentBehaviorType;
UIAttachmentBehaviorTypeItems:表示连接两个item的吸附行为
UIAttachmentBehaviorTypeAnchor:表示连接一个item与锚点的吸附行为



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

上一篇:ngui制作人物头顶的头像和血条


下一篇:nginx停止后再启动出现: [error] open() "/usr/local/nginx/logs/nginx.pid" failed错误的解决方法