美文网首页
动画:CATransaction与CATransition

动画:CATransaction与CATransition

作者: SoaringHeart | 来源:发表于2019-04-01 12:02 被阅读0次
CATransaction是事务,用于批量提交多个对layer-tree的操作,并且是原子性的。所有对layer-tree的修改都必须包含在事务内,可以嵌套。
修改UIView的属性最终也是修改到了layer-tree。当我们改动到layer-tree时,如果当前没有显式创建过CATransaction,则系统会创建一个隐式的CATransaction,这个隐式CATransaction会在RunLoop结束后commit。
+(void)animDuration:(CGFloat)duration 
          animations:(void(^)(void))animations 
          completion:(nullable void (^)(void))completion{

  [CATransaction begin];

  [CATransaction setAnimationDuration:duration];
  animations();
  [CATransaction setCompletionBlock:completion];
  [CATransaction commit];
}

CATransition
/**
 [源]CATransition(用于页面跳转)
 @param type 必须是CATransitionType类型/kCATransition开头的常量

 */
+ (CATransition *)animDuration:(CGFloat)duration
                   functionName:(CAMediaTimingFunctionName)name 
                           type:(NSString *)type 
                        subType:(CATransitionSubtype)subType {

  CATransition *anim = [CATransition animation];
   anim.startProgress = 0.0;//开始
  anim.endProgress = 1.0;//结束
  //动画时间
  anim.duration = duration;
  //设置运动的速度轨迹
  anim.timingFunction = [CAMediaTimingFunction functionWithName:name];
  anim.type = type;//过渡效果
  anim.subtype = subType;//过渡方向[kCATransitionFromTop,kCATransitionFromLeft,kCATransitionFromBottom,kCATransitionFromRight,];
//    [self.view.layer addAnimation:animation forKey:nil];
//    [UIApplication.sharedApplication.keyWindow.layer addAnimation:anim forKey:nil];
   return anim;
}
主要种类:
NSString * const kCATransitionFade; //消退
NSString * const kCATransitionMoveIn;//移入
NSString * const kCATransitionPush;//push
NSString * const kCATransitionReveal;//退出
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";

次要种类:
NSString * const kCATransitionFromRight;
NSString * const kCATransitionFromLeft;
NSString * const kCATransitionFromTop;
NSString * const kCATransitionFromBottom;

相关文章

网友评论

      本文标题:动画:CATransaction与CATransition

      本文链接:https://www.haomeiwen.com/subject/dqambqtx.html