簡體   English   中英

如何判斷UIDynamicAnimator何時處於靜止狀態?

[英]How can I tell when a UIDynamicAnimator is at rest?

我正在玩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];

這是一個簡單的快照行為,它運作良好。 但是,出於各種原因,我想知道系統什么時候進入“休息”狀態 - 即一切都停止了。 我對動畫師的屬性或委托方法都很好。

我怎樣才能做到這一點?

經過更多的討論之后, 似乎 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屬性似乎鏡像了對委托方法的調用 - 當調用willResume時它是1 ,而當調用didPause時它是0

動畫師有一個“跑步”屬性,告訴你動畫師什么時候休息。

與動畫師的行為相關聯的視圖只有在動畫師運行時才能改變位置或改變變換。 出於優化目的,iOS可以暫停然后重新啟動動畫師。 如果您需要檢查您的視圖當前是否受位置或變換的影響,請使用此方法。

Swift 4.2:

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

    func dynamicAnimatorWillResume(_ animator: UIDynamicAnimator) {
        // resume
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM