11

私は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];

これは単純なスナップ動作であり、非常にうまく機能します。しかし、さまざまな理由から、システムがいつ「休止」状態になるか、つまりすべてが停止するかを知りたいのです。アニメーターのプロパティまたはデリゲート メソッドのいずれかで問題ありません。

これどうやってするの?

4

3 に答える 3

20

もう少し突っ込んだ後、がこれを行うよう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記録され、アニメーションが停止してから 1 秒以内にログに記録されます。

さらに、runningUIDynamicAnimator 自体のプロパティは、デリゲート メソッドへの呼び出しを反映しているようです。それは、 willResume1が呼び出されたときであり、 didPauseが呼び出されたときです。0

于 2014-03-08T00:52:11.480 に答える
0

スウィフト 4.2 :

//MARK:- UIDynamicAnimator Delegate
extension YourViewController: UIDynamicAnimatorDelegate {
    func dynamicAnimatorDidPause(_ animator: UIDynamicAnimator) {
        // pause
    }

    func dynamicAnimatorWillResume(_ animator: UIDynamicAnimator) {
        // resume
    }
}
于 2019-01-08T13:40:17.113 に答える