ios - 我如何判断 UIDynamicAnimator 何时处于静止状态?

标签 ios uikit-dynamics

我正在玩 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 在动画停止后的一秒内被记录。

另外,running UIDynamicAnimator 本身的属性似乎反射(reflect)了对委托(delegate)方法的调用 - 当调用 willResume 时它是 1,当 时它是 0 didPause 被调用。

关于ios - 我如何判断 UIDynamicAnimator 何时处于静止状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22263472/

相关文章:

ios - 在 UITextView 中制作项目符号/编号/检查列表

ios - 如果数组日期与今天日期相同,则本地通知

objective-c - iOS 堆栈跟踪之谜,ABRecordCopyValue 值得怀疑

ios - 如何在应用 UIKit Dynamics 重力的同时获取 UIView 的框架更新?

iOS:UIDynamicAnimator updateItemUsingCurrentState 不适用于旋转

ios - UICollectionViewCell 填充了错误的数据

ios - 如何在 willDisplayCell 回调中重新加载 collectionView 的单个单元格?

ios - UIKit Dynamics 通过碰撞更改 View 框架

iOS:UIDynamics 推送行为

ios - 如何使由 UIPushBehavior 操纵的 View 不旋转太多?这是一个荒谬的数量