1

Я пытаюсь использовать UIKit Dynamics для реализации swipe-to-delete на моем UICollectionViewCells. Однако все идет не так, как планировалось. Вот код в методе awakeFromNib UICollectionViewCell в:Каков правильный способ добавления UIKit Dynamics в UICollectionViewCells?

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? Каков правильный способ сделать это?

Спасибо!

ответ

0

Ничего. Это была довольно опечатка. Поведение столкновения было привязано к неправильному объекту.

Право код должен быть

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

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

[self.animator addBehavior:collisionBehavior];