以前對(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à)效果。 其中最主要的就是 type 和 subType 這兩個(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)慎。