ios-动画组
2015-09-30 14:28
543 查看
9.30 动画组
CAAnimationGroup
/*
CAAnimationGroup
1、动画的数组 animations
2、启动的时间 beginTime
动画组设置了持续时间 可能就会导致动画组里面的某一个动画的 持续时间 没响应(失效)
*/
#import "ViewController.h"
@interface ViewController ()
{
CALayer *petal;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self addBgView];
[self addPetaller];
[self addAnimationGroup];
}
- (CAKeyframeAnimation *)dropAnimation
{
CAKeyframeAnimation *drop = [CAKeyframeAnimation animationWithKeyPath:@"position"];
CGMutablePathRef pathRef = CGPathCreateMutable();//创建路径
CGPathMoveToPoint(pathRef, NULL, petal.position.x, petal.position.y);
//CGPathAddCurveToPoint cp1x y cpx y 设置两个点 在这两个点之间取画曲线
//<#CGFloat x#> <#CGFloat y#> 终止点
CGPoint endPoint = CGPointMake(80, 500);
CGPathAddCurveToPoint(pathRef, NULL, 160, 280,-30 , 300,
endPoint.x, endPoint.y);
drop.path = pathRef;
CGPathRelease(pathRef);
return drop;
}
- (CABasicAnimation *)rotationAnimation
{
CABasicAnimation *rotation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotation.toValue = @(M_PI_2*3);
rotation.removedOnCompletion = YES;
return rotation;
}
#pragma mark -----添加动画数组-----
- (void)addAnimationGroup
{
//初始化分组动画
CAAnimationGroup *group = [CAAnimationGroup animation];
group.animations = @[[self rotationAnimation],[self dropAnimation]];
group.duration = 5;
//beginTime 动画开始的时间(10秒之后,延迟加载)
//CACurrentMediaTime 获得当前的时间
//从调用这个方法开始 10秒 之后 执行动画
group.beginTime = CACurrentMediaTime() + 1;
group.removedOnCompletion = NO;
group.fillMode = kCAFillModeBoth;
[petal addAnimation:group forKey:@"group"];
}
- (void)addPetaller
{
UIImage *image = [UIImage imageNamed:@"petal.jpg"];
petal = [[CALayer alloc]init];
petal.position = CGPointMake(100, 200);
petal.bounds = CGRectMake(0, 0,
image.size.width, image.size.height);
petal.contents = (id)image.CGImage;
[self.view.layer addSublayer:petal];
}
- (void)addBgView
{
UIImageView *bgImgView = [[UIImageView alloc]initWithFrame:self.view.frame];
bgImgView.image = [UIImage imageNamed:@"C7QB825$S`(D65_TTRBBX@1.jpg"];
[self.view addSubview:bgImgView];
}
CAAnimationGroup
/*
CAAnimationGroup
1、动画的数组 animations
2、启动的时间 beginTime
动画组设置了持续时间 可能就会导致动画组里面的某一个动画的 持续时间 没响应(失效)
*/
#import "ViewController.h"
@interface ViewController ()
{
CALayer *petal;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self addBgView];
[self addPetaller];
[self addAnimationGroup];
}
- (CAKeyframeAnimation *)dropAnimation
{
CAKeyframeAnimation *drop = [CAKeyframeAnimation animationWithKeyPath:@"position"];
CGMutablePathRef pathRef = CGPathCreateMutable();//创建路径
CGPathMoveToPoint(pathRef, NULL, petal.position.x, petal.position.y);
//CGPathAddCurveToPoint cp1x y cpx y 设置两个点 在这两个点之间取画曲线
//<#CGFloat x#> <#CGFloat y#> 终止点
CGPoint endPoint = CGPointMake(80, 500);
CGPathAddCurveToPoint(pathRef, NULL, 160, 280,-30 , 300,
endPoint.x, endPoint.y);
drop.path = pathRef;
CGPathRelease(pathRef);
return drop;
}
- (CABasicAnimation *)rotationAnimation
{
CABasicAnimation *rotation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotation.toValue = @(M_PI_2*3);
rotation.removedOnCompletion = YES;
return rotation;
}
#pragma mark -----添加动画数组-----
- (void)addAnimationGroup
{
//初始化分组动画
CAAnimationGroup *group = [CAAnimationGroup animation];
group.animations = @[[self rotationAnimation],[self dropAnimation]];
group.duration = 5;
//beginTime 动画开始的时间(10秒之后,延迟加载)
//CACurrentMediaTime 获得当前的时间
//从调用这个方法开始 10秒 之后 执行动画
group.beginTime = CACurrentMediaTime() + 1;
group.removedOnCompletion = NO;
group.fillMode = kCAFillModeBoth;
[petal addAnimation:group forKey:@"group"];
}
- (void)addPetaller
{
UIImage *image = [UIImage imageNamed:@"petal.jpg"];
petal = [[CALayer alloc]init];
petal.position = CGPointMake(100, 200);
petal.bounds = CGRectMake(0, 0,
image.size.width, image.size.height);
petal.contents = (id)image.CGImage;
[self.view.layer addSublayer:petal];
}
- (void)addBgView
{
UIImageView *bgImgView = [[UIImageView alloc]initWithFrame:self.view.frame];
bgImgView.image = [UIImage imageNamed:@"C7QB825$S`(D65_TTRBBX@1.jpg"];
[self.view addSubview:bgImgView];
}
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- Gifski:一个跨平台的高质量 GIF 编码器
- 模仿动画的放大缩小容器
- jQuery实现美观的多级动画效果菜单代码
- php判断GIF图片是否为动画的方法
- jQuery实现动画效果circle实例
- 浅析JavaScript动画
- js排序动画模拟-插入排序
- javascript+HTML5的Canvas实现Lab单车动画效果
- js实现按钮颜色渐变动画效果
- jQuery实现带有洗牌效果的动画分页实例
- jquery实现先淡出再折叠收起的动画效果
- jQuery使用animate创建动画用法实例
- jquery带动画效果幻灯片特效代码