iOS 動畫 —— CATransition

以前對轉場的概念有點籠統,對 ViewController 層次的轉場和 View 的轉場(過渡)老是混淆,區分一下此處先對 View 轉場 用 CATransition 實現動畫,進行一個筆記。

對 CATransition 進行了解,它是CAAnimation的子類,用於做過渡動畫或者轉場動畫,能夠爲層提供移出屏幕和移入屏幕的動畫效果。 其中最主要的就是 typesubType 這兩個屬性。

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

然後根據具體的類型展示我們要的效果。

  • Type: 動畫的類型

    • 公共Type(官方的SDK其實只提供了四種過渡效果)
      CA_EXTERN NSString * const kCATransitionFade;
      CA_EXTERN NSString * const kCATransitionMoveIn;
      CA_EXTERN NSString * const kCATransitionPush;
      CA_EXTERN NSString * const kCATransitionReveal;
    • 私有的Type (私有API提供了其他很多非常炫的過渡動畫),需要自己額外寫的
      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: 動畫類型的方向

    CA_EXTERN NSString * const kCATransitionFromRight;
    CA_EXTERN NSString * const kCATransitionFromLeft;
    CA_EXTERN NSString * const kCATransitionFromTop;
    CA_EXTERN NSString * const kCATransitionFromBottom;

爲了加深印象,對 Type 的類型一一進行嘗試, 只是將 type 的方式替換而已。

CATransition *animation = [CATransition animation];
animation.type = kCATransitionPush;//設置動畫的類型
animation.subtype = kCATransitionFromRight; //設置動畫的方向
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 中的 動畫效果還是很炫的,可以一一嘗試,還是蠻有意思的。

疑惑點,對於私有Type,審覈的時候到底會不會被拒絕呢,官方肯定是說拒絕的,但是我看到網友說也有人成功啦,總的說來對私有 API 這塊還是謹慎。




原文鏈接:http://www.jianshu.com/p/239cf81eb1eb

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章