我在玩UIKitDynamics,它真的很整洁。目前,我有以下代码:

CGPoint center = [newSelectedLabel center];

[self.animator removeBehavior:self.snapBehavior];
self.snapBehavior = [[UISnapBehavior alloc] initWithItem:self.indicatorView snapToPoint:center];
self.snapBehavior.damping = 0.67;
[self.animator addBehavior:self.snapBehavior];

[self.delegate didChangeToIndex:sender.tag];

这是一个简单的快照行为,并且效果很好。但是由于种种原因,我想知道系统何时进入“休息”状态-即一切都停止了运动。我可以使用动画器上的属性或委托(delegate)方法。

我怎样才能做到这一点?

最佳答案

经过一番摸索之后, UIDynamicAnimatorDelegate 似乎执行了此操作-似乎在系统处于静止状态时调用了 - (void)dynamicAnimatorDidPause:(UIDynamicAnimator *)animator 方法。

self.animator = [[UIDynamicAnimator alloc] initWithReferenceView:self];
self.animator.delegate = self;


#pragma mark - UIDynamicAnimator Delegate
- (void)dynamicAnimatorDidPause:(UIDynamicAnimator *)animator
{
    NSLog(@"pause");
}

- (void)dynamicAnimatorWillResume:(UIDynamicAnimator *)animator
{
    NSLog(@"resume");
}

似乎有效-动画开始时记录resume,动画停止后一秒钟内记录pause

另外,UIDynamicAnimator本身的 running 属性似乎将调用镜像到委托(delegate)方法-调用willResume时为1,调用didPause时为0

关于ios - 我怎么知道什么时候UIDynamicAnimator处于静止状态?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22263472/

10-11 17:15