簡體   English   中英

iOS:KVO +動畫=沒有動畫?

[英]iOS: KVO + Animation = No Animation?

我在這樣的塊中為視圖動畫(將其框架移動到屏幕外部):

[UIView animateWithDuration:0.3 animations:^{
    view.frame = CGRectOffset(view.frame, .0f, CGRectGetHeight(view.frame));
} completion:^(BOOL finished) {
    // view is removed here
}];

當按下按鈕觸發時,此動畫效果出色且流暢。 在那之后,視圖被刪除並重新分配。

現在,如果我將其放入KVO觀察器中(由UIGestureRecognizer觸發的值更改):

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    // perform animation from above
}

然后僅在0.3秒后刪除視圖,但不向下移動動畫。 我確定所有這些操作都在主線程上進行。

有什么想法為什么不播放動畫?

解:

多次調用執行動畫的方法,將視圖快速向下動畫,以使其看起來好像立即消失了。 顯然,這一定不能發生。

UIGestureRecognizer的target-action機制與UIControlUIButton )的機制之間有細微的區別: UIControl在檢測到觸摸事件后立即提供動作,而UIGestureRecognizer安排該動作用於下一次運行循環。

盡管這不能解釋丟失的動畫,但仍可能有助於了解發生了什么。 通常,從手勢識別器的動作觸發后,UIView動畫即可正常工作。

暫無
暫無

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

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