IOS UIView Bounce Animation

У меня есть UIVIew (контейнер) и другое UIView (коробка) вид коробки находится внутри ContainerView, Когда UIButton нажата, я хотел бы, чтобы окно видело вниз от нижней части экрана, и отскок с 10px слева; затем, когда отскок прекратился, я все еще хочу, чтобы окно показывало 10px. Вот пример кода из другого вопроса:

UIDynamicAnimator *animator = [[UIDynamicAnimator alloc] initWithReferenceView:self]; //self is the container

UIGravityBehavior* gravityBehavior = [[UIGravityBehavior alloc] initWithItems:@[box]];
[animator addBehavior:gravityBehavior];

UICollisionBehavior* collisionBehavior = [[UICollisionBehavior alloc] initWithItems:@[reportBar.bar]];
collisionBehavior.translatesReferenceBoundsIntoBoundary = YES;
[animator addBehavior:collisionBehavior];

UIDynamicItemBehavior *elasticityBehavior =
[[UIDynamicItemBehavior alloc] initWithItems:@[box]];
elasticityBehavior.elasticity = 0.7f;
[animator addBehavior:elasticityBehavior];

Код работает, когда должен, но окно не сбрасывается.

пример макета

Изменить 1:

  • Self относится к контейнеру UIView
  • Я также попытался изменить себя для currentViewController.view, без изменений.

Изменить 2:

  • весь этот код находится внутри файла реализации представления контейнера.

3 ответа

Решение

Попробовать сделать свойство аниматора,

@property UIDynamicAnimator *animator;

а потом твой код,

_animator = [[UIDynamicAnimator alloc] initWithReferenceView:self];

 ...

Я думаю, что вы не указали правильный ссылочный вид. Должно быть либо self.view или же self.containerView

UIDynamicAnimator *animator = [[UIDynamicAnimator alloc] initWithReferenceView:self];

Обновление Я думаю, что вы должны поместить код в ViewController для этой сцены и, как @BaSha предложил создать свойство аниматора, и после нажатия кнопки вы добавите поведение и будете ссылаться self.containerViewПросто убедитесь, что boxView находится внутри контейнера.

Следующий фрагмент кода может обеспечить эффект BOUNCE для ваших просмотров.

CABasicAnimation * animation = [CABasicAnimation animationWithKeyPath:@"position.y"];</br>
[animation setFromValue:[NSNumber numberWithFloat:y-position1]];   
[animation setToValue:[NSNumber numberWithFloat:y-position2]];
[animation setDuration:.7];    //   time gap between the bounces
animation.repeatCount=500;    //    no:of times bounce effect has to be done 
[YOURVIEW.layer addAnimation:animation forKey:@"somekey"];
Другие вопросы по тегам