iOS 動(dòng)畫(huà) —— CATransition

以前對(duì)轉(zhuǎn)場(chǎng)的概念有點(diǎn)籠統(tǒng),對(duì) ViewController 層次的轉(zhuǎn)場(chǎng)和 View 的轉(zhuǎn)場(chǎng)(過(guò)渡)老是混淆,區(qū)分一下此處先對(duì) View 轉(zhuǎn)場(chǎng) 用 CATransition 實(shí)現(xiàn)動(dòng)畫(huà),進(jìn)行一個(gè)筆記。

對(duì) CATransition 進(jìn)行了解,它是CAAnimation的子類,用于做過(guò)渡動(dòng)畫(huà)或者轉(zhuǎn)場(chǎng)動(dòng)畫(huà),能夠?yàn)閷犹峁┮瞥銎聊缓鸵迫肫聊坏膭?dòng)畫(huà)效果。 其中最主要的就是 typesubType 這兩個(gè)屬性。

@property(copy) NSString *type;
@property(nullable, copy) NSString *subtype;

然后根據(jù)具體的類型展示我們要的效果。

  • Type: 動(dòng)畫(huà)的類型

    • 公共Type(官方的SDK其實(shí)只提供了四種過(guò)渡效果)
CA_EXTERN NSString * const kCATransitionFade;
CA_EXTERN NSString * const kCATransitionMoveIn;
CA_EXTERN NSString * const kCATransitionPush;
CA_EXTERN NSString * const kCATransitionReveal;
  • 私有的Type (私有API提供了其他很多非常炫的過(guò)渡動(dòng)畫(huà)),需要自己額外寫(xiě)的
NSString *const kCATransitionCube = @"cube"; 
NSString *const kCATransitionSuckEffect = @"suckEffect"; 
NSString *const kCATransitionOglFlip = @"oglFlip"; 
NSString *const kCATransitionRippleEffect = @"rippleEffect"; 
NSString *const kCATransitionPageCurl = @"pageCurl"; 
NSString *const kCATransitionPageUnCurl = @"pageUnCurl"; 
NSString *const kCATransitionCameraIrisHollowOpen = @"cameraIrisHollowOpen";
NSString *const kCATransitionCameraIrisHollowClose = @"cameraIrisHollowClose";
  • SubType: 動(dòng)畫(huà)類型的方向
CA_EXTERN NSString * const kCATransitionFromRight;
CA_EXTERN NSString * const kCATransitionFromLeft;
CA_EXTERN NSString * const kCATransitionFromTop;
CA_EXTERN NSString * const kCATransitionFromBottom;

為了加深印象,對(duì) Type 的類型一一進(jìn)行嘗試, 只是將 type 的方式替換而已。

CATransition *animation = [CATransition animation];
animation.type = kCATransitionPush;//設(shè)置動(dòng)畫(huà)的類型
animation.subtype = kCATransitionFromRight; //設(shè)置動(dòng)畫(huà)的方向
animation.duration = 1.0f;
[testView.layer addAnimation:animation forKey:@"pushAnimation"];
  • kCATransitionFade;
kCATransitionFade.gif
  • kCATransitionMoveIn;
kCATransitionMoveIn.gif
  • kCATransitionPush;
kCATransitionPush.gif
  • kCATransitionReveal;
kCATransitionReveal.gif
  • kCATransitionCube;
@"cube".gif
  • kCATransitionSuckEffect;
@"suckEffect".gif
  • kCATransitionOglFlip;
@"oglFlip".gif
  • kCATransitionRippleEffect;
@"rippleEffect".gif
  • kCATransitionPageCurl;
@"pageCurl".gif
  • kCATransitionPageUnCurl;
@"pageUnCurl".gif
  • kCATransitionCameraIrisHollowOpen;
@"cameraIrisHollowOpen".gif
  • kCATransitionCameraIrisHollowClose;
@"cameraIrisHollowClose".gif

特別是 私有 API 中的 動(dòng)畫(huà)效果還是很炫的,可以一一嘗試,還是蠻有意思的。

疑惑點(diǎn),對(duì)于私有Type,審核的時(shí)候到底會(huì)不會(huì)被拒絕呢,官方肯定是說(shuō)拒絕的,但是我看到網(wǎng)友說(shuō)也有人成功啦,總的說(shuō)來(lái)對(duì)私有 API 這塊還是謹(jǐn)慎。

最后編輯于
?著作權(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)容

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