UIView停止乙個塊動畫

2021-09-12 08:59:17 字數 1187 閱讀 7414

uiview類的塊動畫類方法都可以比較方便的實現動畫效果

uiview animatewithduration
那麼,有人想過怎麼停止塊動畫麼.

舉個例子.我們給uiviewcontroller的view新增乙個view然後給他做動畫

uiview *view = [uiview new];

view.backgroundcolor = [uicolor redcolor];

[self.view addsubview:view];

[view mas_makeconstraints:^(masconstraintmaker *make) ];

[self.view layoutifneeded];

// ->到這裡布局完畢,下面是動畫有關**

[view mas_remakeconstraints:^(masconstraintmaker *make) ];

[uiview animatewithduration:10 animations:^

我們可以發現,動畫是完美的執行了.那麼 ,如何停止他呢.

我們知道uiview封裝的是calayer,calayer也有他的動畫屬性(也有些自帶動畫).那麼說不定翻翻calayer能翻到停止動畫的屬性.(calayer裡頭的removeanimationforkey:因為沒key還是用不了)

- (void)removeallanimations;
寫完之後動畫就沒了.直接就是remake後的布局.為了驗證動畫確確實實被我們停掉了我們來寫個延時**驗證一下.

dispatch_after(dispatch_time(dispatch_time_now, nsec_per_sec * 4), dispatch_get_main_queue(), ^);
可以看到執行了4秒動畫後,動畫被停掉了.那麼,我們怎麼才能知道動畫是執行完畢還是執行到一半被停了完畢.

[uiview animatewithduration:.25 animations:^ completion:^(bool finished) ];
我們可以看到,如果沒有手動停止塊動畫(快動畫自己做完),那麼會列印完成.如果手動停止塊動畫,會列印未完成.

如何停止乙個執行緒

停止乙個執行緒的最佳方法是讓它執行完畢,沒有辦法立即停止乙個執行緒,但你可以控制何時或什麼條件下讓他執行完畢。通過條件變數控制線程的執行,執行緒內部檢查變數狀態,外部改變變數值可控制停止執行。為保證執行緒間的即時通訊,需要使用volatile關鍵字或鎖,確保讀執行緒與寫執行緒變數狀態的一致性。pub...

ORACLE如何停止乙個JOB

oracle 如何停止乙個 job dba jobs all jobs user jobs 包含登入使用者所有的 job資訊 dba jobs running 包含正在執行 job相關資訊 注意 須使用oracle 的sys 使用者登入到資料庫,才能檢視 dba jobs running,v pro...

執行緒停止繼續 如何優雅的停止乙個執行緒?

在之前的文章中 i code.online 併發程式設計 執行緒基礎 我們介紹了執行緒的建立和終止,從原始碼的角度去理解了其中的細節,那麼現在如果面試有人問你 如何優雅的停止乙個執行緒?你該如何去回答尼 能不能完美的回答尼?這裡有個思考 當處於sleep時,執行緒能否感受到中斷訊號?對於執行緒的停止...