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;
网友评论