CATransaction核心動(dòng)畫(huà)事務(wù)

Overview

CATransaction是用于將多個(gè)圖層樹(shù)操作批量渲染的原子更新機(jī)制。 對(duì)圖層樹(shù)的每個(gè)修改都必須是事務(wù)的一部分。 支持嵌套事務(wù)。 核心動(dòng)畫(huà)支持兩種類(lèi)型的事務(wù): 隱式事務(wù)和顯式事務(wù)。

隱式事務(wù)
當(dāng)在某一沒(méi)有事務(wù)線程中對(duì)圖層樹(shù)進(jìn)行了修改時(shí),會(huì)自動(dòng)創(chuàng)建隱式事務(wù)并在該線程的Runloop下一個(gè)迭代時(shí)自動(dòng)提交隱式事務(wù)。

顯式事務(wù)
[CATransaction begin];
// 對(duì)圖層進(jìn)行修改
[CATransaction commit];

CATransaction允許覆蓋默認(rèn)的動(dòng)畫(huà)屬性,前提是這個(gè)屬性是可動(dòng)畫(huà)的。 可以自定義持續(xù)時(shí)間,Timing,是否更改屬性觸發(fā)動(dòng)畫(huà),并提供一個(gè)回調(diào)block,以便在完成事務(wù)組的所有動(dòng)畫(huà)時(shí)得到通知。
在事務(wù)期間,您可以臨時(shí)獲取一個(gè)遞歸自旋鎖來(lái)管理屬性原子性。
CATransaction支持嵌套事務(wù)。

下面的例子顯示了如何在2秒的時(shí)間內(nèi)淡出一個(gè)圖層(命名為transitioning Layer)
同時(shí)縮放到它原始大小的三倍。 縮放動(dòng)畫(huà)在嵌套事務(wù)中,其持續(xù)時(shí)間為1秒。 
外部事務(wù)完成后,將transitioning Layer層從其父層移除。

let transitioningLayer = CALayer()
     
// Outer transaction animates `opacity` to 0 over 2 seconds
CATransaction.begin()
CATransaction.setAnimationDuration(2)
CATransaction.setCompletionBlock {
    transitioningLayer.removeFromSuperlayer()
}
    
transitioningLayer.opacity = 0
     
// Inner transaction animates scale to (3, 3, 3) over 1 second
CATransaction.begin()
CATransaction.setAnimationDuration(1)
     
transitioningLayer.transform = CATransform3DMakeScale(3, 3, 3)
     
CATransaction.commit() // Commits inner transaction
CATransaction.commit() // Commits outer transaction

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文將分為四個(gè)部分介紹核心動(dòng)畫(huà): 第一部分將介紹核心動(dòng)畫(huà)的基本概念。 第二部分將介紹動(dòng)畫(huà)實(shí)現(xiàn)原理。 第三部分將介紹...
    曲年閱讀 3,347評(píng)論 1 9
  • 在iOS中隨處都可以看到絢麗的動(dòng)畫(huà)效果,實(shí)現(xiàn)這些動(dòng)畫(huà)的過(guò)程并不復(fù)雜,今天將帶大家一窺ios動(dòng)畫(huà)全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,693評(píng)論 6 30
  • 前言 本文只要描述了iOS中的Core Animation(核心動(dòng)畫(huà):隱式動(dòng)畫(huà)、顯示動(dòng)畫(huà))、貝塞爾曲線、UIVie...
    GitHubPorter閱讀 3,741評(píng)論 7 11
  • 在iOS中隨處都可以看到絢麗的動(dòng)畫(huà)效果,實(shí)現(xiàn)這些動(dòng)畫(huà)的過(guò)程并不復(fù)雜,今天將帶大家一窺iOS動(dòng)畫(huà)全貌。在這里你可以看...
    F麥子閱讀 5,270評(píng)論 5 13
  • 書(shū)寫(xiě)的很好,翻譯的也棒!感謝譯者,感謝感謝! iOS-Core-Animation-Advanced-Techni...
    錢(qián)噓噓閱讀 2,439評(píng)論 0 6

友情鏈接更多精彩內(nèi)容