动画

来源:互联网 发布:物流查询系统源码 编辑:程序博客网 时间:2024/04/24 06:41

//

// CoreAnimationEffect.h

// CoreAnimationEffect

//

//  Created byVincentXue on 13-1-19.

//  Copyright(c) 2013 VincentXue. All rights reserved.

//

 

#import

 

 

 

 

@interfaceCoreAnimationEffect : NSObject

 

#pragma mark - CustomAnimation

 

 

 

+(void)showAnimationType:(NSString*)type

             withSubType:(NSString*)subType

                duration:(CFTimeInterval)duration

          timingFunction:(NSString*)timingFunction

                    view:(UIView*)theView;

 

#pragma mark - PresetAnimation

 

 

 

// reveal

+(void)animationRevealFromBottom:(UIView*)view;

+(void)animationRevealFromTop:(UIView*)view;

+(void)animationRevealFromLeft:(UIView*)view;

+(void)animationRevealFromRight:(UIView*)view;

 

// 渐隐渐消

+(void)animationEaseIn:(UIView*)view;

+(void)animationEaseOut:(UIView*)view;

 

// 翻转

+(void)animationFlipFromLeft:(UIView*)view;

+(void)animationFlipFromRigh:(UIView*)view;

 

// 翻页

+(void)animationCurlUp:(UIView*)view;

+(void)animationCurlDown:(UIView*)view;

 

// push

+(void)animationPushUp:(UIView*)view;

+(void)animationPushDown:(UIView*)view;

+(void)animationPushLeft:(UIView*)view;

+(void)animationPushRight:(UIView*)view;

 

// move

+(void)animationMoveUp:(UIView *)viewduration:(CFTimeInterval)duration;

+(void)animationMoveDown:(UIView *)viewduration:(CFTimeInterval)duration;

+(void)animationMoveLeft:(UIView*)view;

+(void)animationMoveRight:(UIView*)view;

 

// 旋转缩放

 

//各种旋转缩放效果

+(void)animationRotateAndScaleEffects:(UIView*)view;

 

//旋转同时缩小放大效果

+(void)animationRotateAndScaleDownUp:(UIView*)view;

 

 

 

#pragma mark - PrivateAPI

 

 

 

+(void)animationFlipFromTop:(UIView*)view;

+(void)animationFlipFromBottom:(UIView*)view;

 

+(void)animationCubeFromLeft:(UIView*)view;

+(void)animationCubeFromRight:(UIView*)view;

+(void)animationCubeFromTop:(UIView*)view;

+(void)animationCubeFromBottom:(UIView*)view;

 

+(void)animationSuckEffect:(UIView*)view;

 

+(void)animationRippleEffect:(UIView*)view;

 

+(void)animationCameraOpen:(UIView*)view;

+(void)animationCameraClose:(UIView*)view;

 

@end

 

 

 

//

// CoreAnimationEffect.m

// CoreAnimationEffect

//

//  Created byVincentXue on 13-1-19.

//  Copyright(c) 2013 VincentXue. All rights reserved.

//

 

#import"CoreAnimationEffect.h"

 

#import

 

@implementationCoreAnimationEffect

 

 

 

#pragma mark - CustomAnimation

 

+(void)showAnimationType:(NSString*)type

             withSubType:(NSString*)subType

                duration:(CFTimeInterval)duration

          timingFunction:(NSString*)timingFunction

                    view:(UIView*)theView

{

    

 

    CATransition*animation = [CATransitionanimation];

     

    

     

    animation.delegate= self;

     

    

     

    animation.duration= duration;

     

    

     

    

     

    animation.timingFunction= [CAMediaTimingFunctionfunctionWithName:timingFunction];

     

    

     

    animation.fillMode= kCAFillModeForwards;

     

    

     

//   animation.removedOnCompletion = NO;

     

    

     

    

     

    animation.type= type;

     

    

     

    

     

    

     

    animation.subtype= subType;

     

    

     

    [theView.layeraddAnimation:animationforKey:nil];

}

 

#pragma mark - PresetAnimation

 

 

+(void)animationRevealFromBottom:(UIView*)view

{

    CATransition*animation = [CATransitionanimation];

    [animationsetDuration:0.35f];

    [animationsetType:kCATransitionReveal];

    [animationsetSubtype:kCATransitionFromBottom];

    [animationsetFillMode:kCAFillModeForwards];

    [animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseIn]];

     

    [view.layeraddAnimation:animationforKey:nil];

}

 

+(void)animationRevealFromTop:(UIView*)view

{

    CATransition*animation = [CATransitionanimation];

    [animationsetDuration:0.35f];

    [animationsetType:kCATransitionReveal];

    [animationsetSubtype:kCATransitionFromTop];

    [animationsetFillMode:kCAFillModeForwards];

    [animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseOut]];

     

    [view.layeraddAnimation:animationforKey:nil];

}

 

+(void)animationRevealFromLeft:(UIView*)view

{

    CATransition*animation = [CATransitionanimation];

    [animationsetDuration:0.35f];

    [animationsetType:kCATransitionReveal];

    [animationsetSubtype:kCATransitionFromLeft];

    [animationsetFillMode:kCAFillModeForwards];

    [animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseInEaseOut]];

     

    [view.layeraddAnimation:animationforKey:nil];

}

 

+(void)animationRevealFromRight:(UIView*)view

{

    CATransition*animation = [CATransitionanimation];

    [animationsetDuration:0.35f];

    [animationsetType:kCATransitionReveal];

    [animationsetSubtype:kCATransitionFromRight];

    [animationsetFillMode:kCAFillModeForwards];

    [animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseInEaseOut]];

     

    [view.layeraddAnimation:animationforKey:nil];

}

 

 

+(void)animationEaseIn:(UIView*)view

{

    CATransition*animation = [CATransitionanimation];

    [animationsetDuration:0.35f];

    [animationsetType:kCATransitionFade];

    [animationsetFillMode:kCAFillModeForwards];

    [animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseIn]];

     

    [view.layeraddAnimation:animationforKey:nil];

}

 

+(void)animationEaseOut:(UIView*)view

{

    CATransition*animation = [CATransitionanimation];

    [animationsetDuration:0.35f];

    [animationsetType:kCATransitionFade];

    [animationsetFillMode:kCAFillModeForwards];

    [animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseOut]];

     

    [view.layeraddAnimation:animationforKey:nil];

}

 

 

 

 

+(void)animationFlipFromLeft:(UIView*)view

{

    [UIViewbeginAnimations:nilcontext:NULL];

    [UIViewsetAnimationCurve:UIViewAnimationCurveEaseInOut];

    [UIViewsetAnimationDuration:0.35f];

    [UIViewsetAnimationTransition:UIViewAnimationTransitionFlipFromLeftforView:viewcache:NO];

    [UIViewcommitAnimations];

}

 

+(void)animationFlipFromRigh:(UIView*)view

{

    [UIViewbeginAnimations:nilcontext:NULL];

    [UIViewsetAnimationCurve:UIViewAnimationCurveEaseInOut];

    [UIViewsetAnimationDuration:0.35f];

    [UIViewsetAnimationTransition:UIViewAnimationTransitionFlipFromRightforView:viewcache:NO];

    [UIViewcommitAnimations];

}

 

 

+(void)animationCurlUp:(UIView*)view

{

    [UIViewbeginAnimations:nilcontext:NULL];

    [UIViewsetAnimationCurve:UIViewAnimationCurveEaseOut];

    [UIViewsetAnimationDuration:0.35f];

    [UIViewsetAnimationTransition:UIViewAnimationTransitionCurlUpforView:viewcache:NO];

    [UIViewcommitAnimations];

}

 

+(void)animationCurlDown:(UIView*)view

{

    [UIViewbeginAnimations:nilcontext:NULL];

    [UIViewsetAnimationCurve:UIViewAnimationCurveEaseIn];

    [UIViewsetAnimationDuration:0.35f];

    [UIViewsetAnimationTransition:UIViewAnimationTransitionCurlDownforView:viewcache:NO];

    [UIViewcommitAnimations];

}

 

+(void)animationPushUp:(UIView*)view

{

    CATransition*animation = [CATransitionanimation];

    [animationsetDuration:0.35f];

    [animationsetFillMode:kCAFillModeForwards];

    [animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseOut]];

    [animationsetType:kCATransitionPush];

    [animationsetSubtype:kCATransitionFromTop];

     

    [view.layeraddAnimation:animationforKey:nil];

}

 

+(void)animationPushDown:(UIView*)view

{

    CATransition*animation = [CATransitionanimation];

    [animationsetDuration:0.35f];

    [animationsetFillMode:kCAFillModeForwards];

    [animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseOut]];

    [animationsetType:kCATransitionPush];

    [animationsetSubtype:kCATransitionFromBottom];

     

    [view.layeraddAnimation:animationforKey:nil];

}

 

+(void)animationPushLeft:(UIView*)view

{

    CATransition*animation = [CATransitionanimation];

    [animationsetDuration:0.35f];

    [animationsetFillMode:kCAFillModeForwards];

    [animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseOut]];

    [animationsetType:kCATransitionPush];

    [animationsetSubtype:kCATransitionFromLeft];

     

    [view.layeraddAnimation:animationforKey:nil];

}

 

+(void)animationPushRight:(UIView*)view

{

    CATransition*animation = [CATransitionanimation];

    [animationsetDuration:0.35f];

    [animationsetFillMode:kCAFillModeForwards];

    [animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseOut]];

    [animationsetType:kCATransitionPush];

    [animationsetSubtype:kCATransitionFromRight];

     

    [view.layeraddAnimation:animationforKey:nil];

}

 

//presentModalViewController

+(void)animationMoveUp:(UIView *)viewduration:(CFTimeInterval)duration

{

    CATransition*animation = [CATransitionanimation];

    [animationsetDuration:duration];

    [animationsetFillMode:kCAFillModeForwards];

    [animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseInEaseOut]];

    [animationsetType:kCATransitionMoveIn];

    [animationsetSubtype:kCATransitionFromTop];

     

    [view.layeraddAnimation:animationforKey:nil];

}

 

//dissModalViewController

+(void)animationMoveDown:(UIView *)viewduration:(CFTimeInterval)duration

{

    CATransition*transition = [CATransitionanimation];

    transition.duration=0.4;

    transition.timingFunction= [CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseInEaseOut];

    transition.type= kCATransitionReveal;

    transition.subtype= kCATransitionFromBottom;

    [view.layeraddAnimation:transitionforKey:nil];

}

 

+(void)animationMoveLeft:(UIView*)view

{

    CATransition*animation = [CATransitionanimation];

    [animationsetDuration:0.35f];

    [animationsetFillMode:kCAFillModeForwards];

    [animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseOut]];

    [animationsetType:kCATransitionMoveIn];

    [animationsetSubtype:kCATransitionFromLeft];

     

    [view.layeraddAnimation:animationforKey:nil];

}

 

+(void)animationMoveRight:(UIView*)view

{

    CATransition*animation = [CATransitionanimation];

    [animationsetDuration:0.35f];

    [animationsetFillMode:kCAFillModeForwards];

    [animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseOut]];

    [animationsetType:kCATransitionMoveIn];

    [animationsetSubtype:kCATransitionFromRight];

     

    [view.layeraddAnimation:animationforKey:nil];

}

 

+(void)animationRotateAndScaleEffects:(UIView*)view

{

    [UIViewanimateWithDuration:0.35fanimations:^

     {

         

          

         view.transform= CGAffineTransformMakeScale(0.001,0.001);

          

         CABasicAnimation*animation = [CABasicAnimationanimationWithKeyPath:@"transform"];

          

         //向右旋转45°缩小到最小,然后再从小到大推出.

         animation.toValue= [NSValuevalueWithCATransform3D:CATransform3DMakeRotation(M_PI,0.70, 0.40,0.80)];

          

         

          

         animation.duration= 0.45;

         animation.repeatCount= 1;

         [view.layeraddAnimation:animationforKey:nil];

          

     }

                    completion:^(BOOLfinished)

     {

         [UIViewanimateWithDuration:0.35fanimations:^

          {

              view.transform= CGAffineTransformMakeScale(1.0,1.0);

          }];

     }];

}

 

 

 

 

 

+(void)animationRotateAndScaleDownUp:(UIView*)view

{

    CABasicAnimation*rotationAnimation = [CABasicAnimationanimationWithKeyPath:@"transform.rotation.z"];

 rotationAnimation.toValue= [NSNumbernumberWithFloat:(2 * M_PI) *2];

 rotationAnimation.duration= 0.35f;

 rotationAnimation.timingFunction= [CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseInEaseOut];

     

 CABasicAnimation*scaleAnimation = [CABasicAnimationanimationWithKeyPath:@"transform.scale"];

 scaleAnimation.toValue= [NSNumbernumberWithFloat:0.0];

 scaleAnimation.duration= 0.35f;

 scaleAnimation.timingFunction= [CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseInEaseOut];

  

 CAAnimationGroup*animationGroup = [CAAnimationGroupanimation];

 animationGroup.duration= 0.35f;

 animationGroup.autoreverses= YES;

 animationGroup.repeatCount= 1;

 animationGroup.animations=[NSArrayarrayWithObjects:rotationAnimation, scaleAnimation,nil];

 [view.layeraddAnimation:animationGroupforKey:@"animationGroup"];

}

 

 

 

#pragma mark - PrivateAPI

 

+(void)animationFlipFromTop:(UIView*)view

{

    CATransition*animation = [CATransitionanimation];

    [animationsetDuration:0.35f];

    [animationsetFillMode:kCAFillModeForwards];

    [animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseOut]];

    [animationsetType:@"oglFlip"];

    [animationsetSubtype:@"fromTop"];

     

    [view.layeraddAnimation:animationforKey:nil];

}

 

+(void)animationFlipFromBottom:(UIView*)view

{

    CATransition*animation = [CATransitionanimation];

    [animationsetDuration:0.35f];

    [animationsetFillMode:kCAFillModeForwards];

    [animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseOut]];

    [animationsetType:@"oglFlip"];

    [animationsetSubtype:@"fromBottom"];

     

    [view.layeraddAnimation:animationforKey:nil];

}

 

+(void)animationCubeFromLeft:(UIView*)view

{

    CATransition*animation = [CATransitionanimation];

    [animationsetDuration:0.35f];

    [animationsetFillMode:kCAFillModeForwards];

    [animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseOut]];

    [animationsetType:@"cube"];

    [animationsetSubtype:@"fromLeft"];

     

    [view.layeraddAnimation:animationforKey:nil];

}

 

+(void)animationCubeFromRight:(UIView*)view

{

    CATransition*animation = [CATransitionanimation];

    [animationsetDuration:0.35f];

    [animationsetFillMode:kCAFillModeForwards];

    [animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseOut]];

    [animationsetType:@"cube"];

    [animationsetSubtype:@"fromRight"];

     

    [view.layeraddAnimation:animationforKey:nil];

}

 

+(void)animationCubeFromTop:(UIView*)view

{

    CATransition*animation = [CATransitionanimation];

    [animationsetDuration:0.35f];

    [animationsetFillMode:kCAFillModeForwards];

    [animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseOut]];

    [animationsetType:@"cube"];

    [animationsetSubtype:@"fromTop"];

     

    [view.layeraddAnimation:animationforKey:nil];

}

 

+(void)animationCubeFromBottom:(UIView*)view

{

    CATransition*animation = [CATransitionanimation];

    [animationsetDuration:0.35f];

    [animationsetFillMode:kCAFillModeForwards];

    [animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseOut]];

    [animationsetType:@"cube"];

    [animationsetSubtype:@"fromBottom"];

     

    [view.layeraddAnimation:animationforKey:nil];

}

 

+(void)animationSuckEffect:(UIView*)view

{

    CATransition*animation = [CATransitionanimation];

    [animationsetDuration:0.35f];

    [animationsetFillMode:kCAFillModeForwards];

    [animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseOut]];

    [animationsetType:@"suckEffect"];

     

    [view.layeraddAnimation:animationforKey:nil];

}

 

+(void)animationRippleEffect:(UIView*)view

{

    CATransition*animation = [CATransitionanimation];

    [animationsetDuration:0.35f];

    [animationsetFillMode:kCAFillModeForwards];

    [animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseOut]];

    [animationsetType:@"rippleEffect"];

     

    [view.layeraddAnimation:animationforKey:nil];

}

 

+(void)animationCameraOpen:(UIView*)view

{

    CATransition*animation = [CATransitionanimation];

    [animationsetDuration:0.35f];

    [animationsetFillMode:kCAFillModeForwards];

    [animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseOut]];

    [animationsetType:@"cameraIrisHollowOpen"];

    [animationsetSubtype:@"fromRight"];

     

    [view.layeraddAnimation:animationforKey:nil];

}

 

+(void)animationCameraClose:(UIView*)view

{

    CATransition*animation = [CATransitionanimation];

    [animationsetDuration:0.35f];

    [animationsetFillMode:kCAFillModeForwards];

    [animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseOut]];

    [animationsetType:@"cameraIrisHollowClose"];

    [animationsetSubtype:@"fromRight"];

     

    [view.layeraddAnimation:animationforKey:nil];

}

@end

0 0
原创粉丝点击