动画

【iOS开发】30多个iOS常用动画

2016-07-10  本文已影响419人  Fun箱Dao柜

【iOS开发】30多个iOS常用动画,带详细注释 (2014-04-20 14:55:54)转载▼
标签: ios开发 动画 it 分类: Xcode/iOS/MacOS
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

// 渐隐渐消

// 翻转

// 翻页

// push

// move

// 旋转缩放

// 各种旋转缩放效果

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

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
(void)showAnimationType:(NSString )type
withSubType:(NSString *)subType
duration:(CFTimeInterval)duration
timingFunction:(NSString *)timingFunction
view:(UIView )theView
{
/
CATransition

@see http://www.dreamingwish.com/dream-2012/the-concept-of-coreanimation-programming-guide.html
@see http://geeklu.com/2012/09/animation-in-ios/ *
CATransition 常用设置及属性注解如下: */
CATransition *animation = [CATransition animation];

animation.delegate = self;

animation.duration = duration;

animation.timingFunction = [CAMediaTimingFunction functionWithName:timingFunction];

animation.fillMode = kCAFillModeForwards;

// animation.removedOnCompletion = NO;

** type

** type

animation.type = type;

** subtype

** subtype

**

animation.subtype = subType;

**

[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

1

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

// dissModalViewController

(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:^
{
/*

*/

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

上一篇 下一篇

猜你喜欢

热点阅读