30个iOS常用动画

30多个iOS常用动画,带详细注释

//

// CoreAnimationEffect.h

// CoreAnimationEffect

//

// Created by VincentXue on 13-1-19.

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

//

import

 

@interface CoreAnimationEffect : NSObject

pragma mark - Custom Animation

 

  • (void)showAnimationType:(NSString *)type withSubType:(NSString *)subType duration:(CFTimeInterval)duration timingFunction:(NSString *)timingFunction view:(UIView *)theView;

pragma mark - Preset Animation

 

// 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 *)view duration:(CFTimeInterval)duration;

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

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

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

// 旋转缩放

// 各种旋转缩放效果

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

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

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

pragma mark - Private API

 

  • (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 by VincentXue on 13-1-19.

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

//

import "CoreAnimationEffect.h"

import

@implementation CoreAnimationEffect

 

pragma mark - Custom Animation

// animation.removedOnCompletion = NO;


** type

 *

 *  各种动画效果  其中除了'fade', `moveIn', `push' , `reveal' ,其他属于私有的API(我是这么认为的,可以点进去看下注释).

 *  ↑↑↑上面四个可以分别使用'kCATransitionFade', 'kCATransitionMoveIn', 'kCATransitionPush', 'kCATransitionReveal'来调用.

 *  @"cube"                     立方体翻滚效果

 *  @"moveIn"                   新视图移到旧视图上面

 *  @"reveal"                   显露效果(将旧视图移开,显示下面的新视图)

 *  @"fade"                     交叉淡化过渡(不支持过渡方向)             (默认为此效果)

 *  @"pageCurl"                 向上翻一页

 *  @"pageUnCurl"               向下翻一页

 *  @"suckEffect"               收缩效果,类似系统最小化窗口时的神奇效果(不支持过渡方向)

 *  @"rippleEffect"             滴水效果,(不支持过渡方向)

 *  @"oglFlip"                  上下左右翻转效果

 *  @"rotate"                   旋转效果

 *  @"push"                     

 *  @"cameraIrisHollowOpen"     相机镜头打开效果(不支持过渡方向)

 *  @"cameraIrisHollowClose"    相机镜头关上效果(不支持过渡方向)

 *


** type

 *

 *  kCATransitionFade            交叉淡化过渡

 *  kCATransitionMoveIn          新视图移到旧视图上面

 *  kCATransitionPush            新视图把旧视图推出去

 *  kCATransitionReveal          将旧视图移开,显示下面的新视图

 */


animation.type = type;


** subtype

 *

 *  各种动画方向

 *

 *  kCATransitionFromRight;      同字面意思(下同)

 *  kCATransitionFromLeft;

 *  kCATransitionFromTop;

 *  kCATransitionFromBottom;

 *


** subtype

 *

 *  当type为@"rotate"(旋转)的时候,它也有几个对应的subtype,分别为:

 *  90cw    逆时针旋转90°

 *  90ccw   顺时针旋转90°

 *  180cw   逆时针旋转180°

 *  180ccw  顺时针旋转180°

 *


**

 *  type与subtype的对应关系(必看),如果对应错误,动画不会显现.

 *

 *  @see http://iphonedevwiki.net/index.php/CATransition

 *


animation.subtype = subType;


**

 *  所有核心动画和特效都是基于CAAnimation,而CAAnimation是作用于CALayer的.所以把动画添加到layer上.

 *  forKey  可以是任意字符串.

 *


[theView.layer addAnimation:animation forKey:nil];

}

pragma mark - Preset Animation

  • (void)animationRevealFromBottom:(UIView *)view
    {
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.35f];
    [animation setType:kCATransitionReveal];
    [animation setSubtype:kCATransitionFromBottom];
    [animation setFillMode:kCAFillModeForwards];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
    [view.layer addAnimation:animation forKey:nil];
    }
  • (void)animationRevealFromTop:(UIView *)view
    {
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.35f];
    [animation setType:kCATransitionReveal];
    [animation setSubtype:kCATransitionFromTop];
    [animation setFillMode:kCAFillModeForwards];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
    [view.layer addAnimation:animation forKey:nil];
    }
  • (void)animationRevealFromLeft:(UIView *)view
    {
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.35f];
    [animation setType:kCATransitionReveal];
    [animation setSubtype:kCATransitionFromLeft];
    [animation setFillMode:kCAFillModeForwards];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
    [view.layer addAnimation:animation forKey:nil];
    }
  • (void)animationRevealFromRight:(UIView *)view
    {
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.35f];
    [animation setType:kCATransitionReveal];
    [animation setSubtype:kCATransitionFromRight];
    [animation setFillMode:kCAFillModeForwards];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
    [view.layer addAnimation:animation forKey:nil];
    }
  • (void)animationEaseIn:(UIView *)view
    {
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.35f];
    [animation setType:kCATransitionFade];
    [animation setFillMode:kCAFillModeForwards];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
    [view.layer addAnimation:animation forKey:nil];
    }
  • (void)animationEaseOut:(UIView *)view
    {
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.35f];
    [animation setType:kCATransitionFade];
    [animation setFillMode:kCAFillModeForwards];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
    [view.layer addAnimation:animation forKey:nil];
    }

 

  • (void)animationFlipFromLeft:(UIView *)view
    {
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationDuration:0.35f];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:view cache:NO];
    [UIView commitAnimations];
    }
  • (void)animationFlipFromRigh:(UIView *)view
    {
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationDuration:0.35f];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:view cache:NO];
    [UIView commitAnimations];
    }
  • (void)animationCurlUp:(UIView *)view
    {
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
    [UIView setAnimationDuration:0.35f];
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:view cache:NO];
    [UIView commitAnimations];
    }
  • (void)animationCurlDown:(UIView *)view
    {
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
    [UIView setAnimationDuration:0.35f];
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:view cache:NO];
    [UIView commitAnimations];
    }
  • (void)animationPushUp:(UIView *)view
    {
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.35f];
    [animation setFillMode:kCAFillModeForwards];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
    [animation setType:kCATransitionPush];
    [animation setSubtype:kCATransitionFromTop];
    [view.layer addAnimation:animation forKey:nil];
    }
  • (void)animationPushDown:(UIView *)view
    {
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.35f];
    [animation setFillMode:kCAFillModeForwards];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
    [animation setType:kCATransitionPush];
    [animation setSubtype:kCATransitionFromBottom];
    [view.layer addAnimation:animation forKey:nil];
    }
  • (void)animationPushLeft:(UIView *)view
    {
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.35f];
    [animation setFillMode:kCAFillModeForwards];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
    [animation setType:kCATransitionPush];
    [animation setSubtype:kCATransitionFromLeft];
    [view.layer addAnimation:animation forKey:nil];
    }
  • (void)animationPushRight:(UIView *)view
    {
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.35f];
    [animation setFillMode:kCAFillModeForwards];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
    [animation setType:kCATransitionPush];
    [animation setSubtype:kCATransitionFromRight];
    [view.layer addAnimation:animation forKey:nil];
    }

// presentModalViewController

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

{

CATransition *animation = [CATransition animation];

[animation setDuration:duration];

[animation setFillMode:kCAFillModeForwards];

[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];

[animation setType:kCATransitionMoveIn];

[animation setSubtype:kCATransitionFromTop];

1

[view.layer addAnimation:animation forKey:nil];

}

// dissModalViewController

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

{

CATransition *transition = [CATransition animation];

transition.duration =0.4;

transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

transition.type = kCATransitionReveal;

transition.subtype = kCATransitionFromBottom;

[view.layer addAnimation:transition forKey:nil];

}

  • (void)animationMoveLeft:(UIView *)view
    {
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.35f];
    [animation setFillMode:kCAFillModeForwards];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
    [animation setType:kCATransitionMoveIn];
    [animation setSubtype:kCATransitionFromLeft];
    [view.layer addAnimation:animation forKey:nil];
    }
  • (void)animationMoveRight:(UIView *)view
    {
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.35f];
    [animation setFillMode:kCAFillModeForwards];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
    [animation setType:kCATransitionMoveIn];
    [animation setSubtype:kCATransitionFromRight];
    [view.layer addAnimation:animation forKey:nil];
    }

+(void)animationRotateAndScaleEffects:(UIView )view
{
[UIView animateWithDuration:0.35f animations:^
{
/*

* @see http://donbe.blog.163.com/blog/static/138048021201061054243442/

*

* @param transform 形变属性(结构体),可以利用这个属性去对view做一些翻转或者缩放.详解请猛戳↑URL.

*

* @method valueWithCATransform3D: 此方法需要一个CATransform3D的结构体.一些非详细的讲解可以看下面的URL

*

* @see http://blog.csdn.net/liubo0_0/article/details/7452166

*

*/

 




animation.type = type;








animation.subtype = subType;




[theView.layer addAnimation:animation forKey:nil];

}

 

 

  • (void)animationRotateAndScaleDownUp:(UIView *)view
    {
    CABasicAnimation *rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
    rotationAnimation.toValue = [NSNumber numberWithFloat:(2 * M_PI) * 2];
    rotationAnimation.duration = 0.35f;
    rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
    scaleAnimation.toValue = [NSNumber numberWithFloat:0.0];
    scaleAnimation.duration = 0.35f;
    scaleAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    CAAnimationGroup *animationGroup = [CAAnimationGroup animation];
    animationGroup.duration = 0.35f;
    animationGroup.autoreverses = YES;
    animationGroup.repeatCount = 1;
    animationGroup.animations =[NSArray arrayWithObjects:rotationAnimation, scaleAnimation, nil];
    [view.layer addAnimation:animationGroup forKey:@"animationGroup"];
    }

pragma mark - Private API

  • (void)animationFlipFromTop:(UIView *)view
    {
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.35f];
    [animation setFillMode:kCAFillModeForwards];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
    [animation setType:@"oglFlip"];
    [animation setSubtype:@"fromTop"];
    [view.layer addAnimation:animation forKey:nil];
    }
  • (void)animationFlipFromBottom:(UIView *)view
    {
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.35f];
    [animation setFillMode:kCAFillModeForwards];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
    [animation setType:@"oglFlip"];
    [animation setSubtype:@"fromBottom"];
    [view.layer addAnimation:animation forKey:nil];
    }
  • (void)animationCubeFromLeft:(UIView *)view
    {
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.35f];
    [animation setFillMode:kCAFillModeForwards];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
    [animation setType:@"cube"];
    [animation setSubtype:@"fromLeft"];
    [view.layer addAnimation:animation forKey:nil];
    }
  • (void)animationCubeFromRight:(UIView *)view
    {
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.35f];
    [animation setFillMode:kCAFillModeForwards];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
    [animation setType:@"cube"];
    [animation setSubtype:@"fromRight"];
    [view.layer addAnimation:animation forKey:nil];
    }
  • (void)animationCubeFromTop:(UIView *)view
    {
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.35f];
    [animation setFillMode:kCAFillModeForwards];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
    [animation setType:@"cube"];
    [animation setSubtype:@"fromTop"];
    [view.layer addAnimation:animation forKey:nil];
    }
  • (void)animationCubeFromBottom:(UIView *)view
    {
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.35f];
    [animation setFillMode:kCAFillModeForwards];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
    [animation setType:@"cube"];
    [animation setSubtype:@"fromBottom"];
    [view.layer addAnimation:animation forKey:nil];
    }
  • (void)animationSuckEffect:(UIView *)view
    {
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.35f];
    [animation setFillMode:kCAFillModeForwards];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
    [animation setType:@"suckEffect"];
    [view.layer addAnimation:animation forKey:nil];
    }
  • (void)animationRippleEffect:(UIView *)view
    {
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.35f];
    [animation setFillMode:kCAFillModeForwards];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
    [animation setType:@"rippleEffect"];
    [view.layer addAnimation:animation forKey:nil];
    }
  • (void)animationCameraOpen:(UIView *)view
    {
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.35f];
    [animation setFillMode:kCAFillModeForwards];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
    [animation setType:@"cameraIrisHollowOpen"];
    [animation setSubtype:@"fromRight"];
    [view.layer addAnimation:animation forKey:nil];
    }
  • (void)animationCameraClose:(UIView *)view
    {
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.35f];
    [animation setFillMode:kCAFillModeForwards];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
    [animation setType:@"cameraIrisHollowClose"];
    [animation setSubtype:@"fromRight"];
    [view.layer addAnimation:animation forKey:nil];
    }
    @end



转自 http://blog.sina.com.cn/s/blog_693de6100101nbld.html
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值