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"];