【iOS开发】30多个iOS常用动画,带详细注释
来源:互联网 发布:surface rt ubuntu 编辑:程序博客网 时间:2024/06/05 06:29
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)animationRevealFromBotto
+ (void)animationRevealFromTop:(UIView *)view;
+ (void)animationRevealFromLeft:(UIView *)view;
+ (void)animationRevealFromRight
// 渐隐渐消
+ (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)animationRotateAndScaleE
// 旋转同时缩小放大效果
+ (void)animationRotateAndScaleD
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;
- @see
// 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)animationRevealFromBotto
m:(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];
}
// presentModalViewControll
+ (void)animationMoveUp:(UIView *)view duration:(CFTimeInterval)duration
{
CATransition *animation = [CATransition animation];
[animation setDuration:duration];
[animation setFillMode:kCAFillModeForwards];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEa
[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:kCAMediaTimingFunctionEa
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)animationRotateAndScaleE
{
[UIView animateWithDuration:0.35f animations:^
{
/*
* @see
*
* @param transform 形变属性(结构体),可以利用这个属性去对view做一些翻转或者缩放.详解请猛戳↑URL.
*
* @method valueWithCATransform3D: 此方法需要一个CATransform3D的结构体.一些非详细的讲解可以看下面的URL
*
* @see
*
*/
animation.type = type;animation.subtype = subType;[theView.layer addAnimation:animation forKey:nil];
}
(void)animationRotateAndScaleD
ownUp:(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
- IOS 30多个iOS常用动画,带详细注释
- IOS 30多个iOS常用动画,带详细注释
- iOS 30多个iOS常用动画,带详细注释
- IOS 30多个iOS常用动画,带详细注释
- IOS 30多个iOS常用动画,带详细注释
- IOS 30多个iOS常用动画,带详细注释
- IOS 30多个iOS常用动画,带详细注释
- iOS 30多个iOS常用动画,带详细注释
- iOS 30多个iOS常用动画,带详细注释
- IOS 30多个iOS常用动画,带详细注释
- IOS 30多个iOS常用动画,带详细注释
- IOS 30多个iOS常用动画,带详细注释
- IOS 30多个iOS常用动画,带详细注释
- IOS 30多个iOS常用动画,带详细注释
- IOS 30多个iOS常用动画,带详细注释
- IOS 30多个iOS常用动画,带详细注释
- IOS 30多个iOS常用动画,带详细注释
- IOS 30多个iOS常用动画,带详细注释
- 黑马程序员_面向对象(2)
- I/O中断初始化顺序
- {转}用python写MapReduce函数——以WordCount为例
- echarts加载动态数据---实时统计
- [leetcode] String to Integer (atoi)
- 【iOS开发】30多个iOS常用动画,带详细注释
- USACO2.4.1 The Tamworth Two (ttwo)
- C#中如何捕捉对话框的文本内容
- UVA 10304 Optimal Binary Search Tree (区间dp)
- uva 1335 - Beijing Guard
- Android 解压html压缩数据
- C语言 链表
- 南阳62 笨小熊
- 设计模式之Decorator(油漆工)