我想使用UIDynamicAnimator
重力/碰撞/弹性效果为物体放置动画。我查看了 Apple 的示例应用程序DynamicsCatalog,它非常简单,除了当对象从其容器边界之外开始时。
例如,这是从示例应用程序APLCollisionGravityViewController.m
文件中获取的代码:
UIDynamicAnimator *animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
UIGravityBehavior *gravityBeahvior = [[UIGravityBehavior alloc] initWithItems:@[self.square]];
[animator addBehavior:gravityBeahvior];
UICollisionBehavior *collisionBehavior = [[UICollisionBehavior alloc] initWithItems:@[self.square]];
collisionBehavior.translatesReferenceBoundsIntoBoundary = YES;
collisionBehavior.collisionDelegate = self;
[animator addBehavior:collisionBehavior];
如果框架self.square
最初完全在self.view
. 如果我将其更改为负值frame.origin.y
,事情就会变得陌生。具体来说,如果 的绝对值frame.origin.y
超过 的一半frame.size.height
,则正方形似乎是在“吸引”向上而不是向下——它是上升而不是下降。
我正在寻找最初完全在容器边界之外的正方形(即我设置frame.origin.y = -frame.size.height
),如何修改动画/重力/碰撞行为以适应它?