- [self.transitionCoordinator
- animateAlongsideTransition:^(id<UIViewControllerTransitionCoo
- rdinatorContext> context) {
- //要执行的动画
- }
- completion:^(id<UIViewControllerTransitionCoordinatorContext>
- context) {
- //动画结束后执行的代码块
- }];
- [self.transitionCoordinator
- notifyWhenInteractionEndsUsingBlock:^(id<UIViewControllerTran
- sitionCoordinatorContext> context) {
- //动画结束后执?行的代码块
- }];
详情参考:http://blog.csdn.net/lengshengren/article/details/12000649
UIDynamicAnimator --动力动画
UIDynamicBehavior--动力行为抽象类
UIPushBehavior--推动行为
通过对象UIPushBehavior给动力项指定一个持续的或者瞬时的力(force vector)
UISnapBehavior -- 捕捉行为
通过对象UISnapBehavior给动力项指定一个捕捉点。动力项会根据配置的效果,来抓住这一捕捉点。
当动力行为被添加到animator(UIDynamicAnimator类的实例对象)时,动力行为就被激活。animator为动力行为的执行提供了上下文。动力项可以有多个行为,只不过所有这些行为都必须添加到相同的animator中。
UIGravityBehavior--重力行为
通过对象UIGravityBehavior给动力项指定一个重力矢量,具有重力矢量的动力项,会在重力矢量的方向上一直加速,直到与别的动力项产生了冲突或者,遇到了边界。
UIAttachmentBehavior--吸附行为
有一个对象UIAttachmentBehavior,该对象用来指定两个动力项(项或点)之间的连接,当一个项或者点移动时,吸附的项也随之移动。当然,这个连接并不是完全是静态的(static),吸附的项有两个属性damping(阻尼)和oscillation(震荡),这两个属性决定了吸附项的行为是如何随时间而变化的。
UICollisionBehavior--碰撞行为
通过对象UICollisionBehavior指定一个边界,并且让各个动力项,在该边界内参与碰撞。UICollisionBehavior对象还可以指定这些动力项适当的回应碰撞。
- (void)addDynamicBehaviour {
theAnimator = [[UIDynamicAnimator alloc] initWithReferenceView:self];
UIGravityBehavior *gravityBehavior = [[UIGravityBehavior alloc] initWithItems:@[ballView]];
[theAnimator addBehavior:gravityBehavior];
UICollisionBehavior *collisionBehavior = [[UICollisionBehavior alloc] initWithItems:@[ballView]];
[collisionBehavior setTranslatesReferenceBoundsIntoBoundary:YES];
[theAnimator addBehavior:collisionBehavior];
UIDynamicItemBehavior *itemBehavior = [[UIDynamicItemBehavior alloc] initWithItems:@[ballView]];
[itemBehavior setElasticity:0.9];
[theAnimator addBehavior:itemBehavior];
[collisionBehavior setCollisionDelegate:self];
}