将UIKit Dynamics添加到UICollectionViewCells的正确方法是什么?

时间:2015-12-19 22:24:06

标签: ios uicollectionview uikit uicollectionviewcell uikit-dynamics

我试图使用UIKit Dynamics在我的UICollectionViewCells上实现滑动删除。但事情并没有按计划进行。这是UICollectionViewCell的awakeFromNib方法中的代码:

self.animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.contentView];

UICollisionBehavior *collisionBehavior = [[UICollisionBehavior alloc] initWithItems:@[self.contentView]];
[collisionBehavior setTranslatesReferenceBoundsIntoBoundaryWithInsets:UIEdgeInsetsMake(0, 0, 0, -20)];
[self.animator addBehavior:collisionBehavior];

self.gravityBehavior = [[UIGravityBehavior alloc] initWithItems:@[self.containerView]];
self.gravityBehavior.gravityDirection = CGVectorMake(0, 0);
[self.animator addBehavior:self.gravityBehavior];

self.pushBehavior = [[UIPushBehavior alloc] initWithItems:@[self.containerView] mode:UIPushBehaviorModeInstantaneous];
self.pushBehavior.magnitude = 0.0f;
self.pushBehavior.angle = 0.0f;
[self.animator addBehavior:self.pushBehavior];

UIDynamicItemBehavior *itemBehavior = [[UIDynamicItemBehavior alloc] initWithItems:@[self.containerView]];
itemBehavior.elasticity = 0.45f;
[self.animator addBehavior:itemBehavior];

但这并不是那么好用。这是在启动时使用上面的代码发生的事情:

Dynamics fail

这种行为似乎主要是由UICollisionBehavior产生的。如果我对它进行评论,那么所有不是红色背景的容器视图都不会生成动画,但会显示向左偏移几个点。

我是否有权尝试在UICollectionViewCell中实现此功能?这样做的正确方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

没关系。这几乎是一个错字。碰撞行为附加到错误的对象。

正确的代码应该是

UICollisionBehavior *collisionBehavior = [[UICollisionBehavior alloc] initWithItems:@[self.containerView]];

[collisionBehavior setTranslatesReferenceBoundsIntoBoundaryWithInsets:UIEdgeInsetsMake(0, 0, 0, -20)];

[self.animator addBehavior:collisionBehavior];