iOS动画:UIView动画和CALayer动画(CABasicAnimation、CAKeyframeAnimation的使用)
iOS中的动画有两种实现方式,一种是UIView来实现动画,另一种动画是通过CALayer来实现,下面介绍两种动画的简单实现:
创新互联-专业网站定制、快速模板网站建设、高性价比平和网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式平和网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖平和地区。费用合理售后完善,十余年实体公司更值得信赖。
一、UIView动画的实现
UIView使用Context来实现动画
关键代码:
//参数1 动画名称 参数2 要实现动画的对象上下文 [UIView beginAnimations:@"attribute" context:_showImageView]; //设置动画的时间 [UIView setAnimationDuration:1.0f]; //设置动画延迟时间 // [UIView setAnimationDelay:2]; //设置视图center 实现试图移动动画 _showImageView.center = CGPointMake(100, 100); //设置alpha值:视图透明度 _showImageView.alpha = 0.2f; //设置背景颜色 _showImageView.backgroundColor = [UIColor greenColor]; //UIView动画 设置代理 [UIView setAnimationDelegate:self]; //动画将要开始代理方法 [UIView setAnimationWillStartSelector:@selector(animationWillStart:context:)]; //动画已经结束代理方法 [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)]; //提交动画设置,执行动画 [UIView commitAnimations];
使用Block实现的动画:
//UIView动画, 使用Block实现 [UIView animateWithDuration:1.0f animations:^{ //通过设置translation 实现视图的偏移 if ([self.mySwitch isOn]) { //基于上一次的translation _showImageView.transform = CGAffineTransformTranslate(_showImageView.transform, 50, 0); } else { //基于原始的translation _showImageView.transform = CGAffineTransformMakeTranslation(-50, 0); } }];
二、CALayer动画的实现
CABasic动画的实现:根据初始位置和结束位置确定动画
//CABasic 有两个属性 fromValue 动画开始值,toValue动画结束值 CABasicAnimation *animation1 = [CABasicAnimation animationWithKeyPath:@"position"]; [animation1 setDuration:2]; animation1.fromValue = [NSValue valueWithCGPoint:CGPointMake(150, 150)]; animation1.toValue = [NSValue valueWithCGPoint:CGPointMake(200, 200)]; [_p_w_picpathView.layer addAnimation:animation1 forKey:@"position"];
创建一组动画:
//创建组动画对象 CAAnimationGroup *group = [CAAnimationGroup animation]; //CABasic动画 CABasicAnimation *animation1 = [CABasicAnimation animationWithKeyPath:@"transform.scale.y"]; animation1.fromValue = @1.5; animation1.toValue = @0.5; //关键帧动画 CAKeyframeAnimation *animation2 = [CAKeyframeAnimation animationWithKeyPath:@"position"]; animation2.values = @[[NSValue valueWithCGPoint:CGPointMake(100, 100)], [NSValue valueWithCGPoint:CGPointMake(200, 150)], [NSValue valueWithCGPoint:CGPointMake(100, 200)], [NSValue valueWithCGPoint:CGPointMake(200, 250)]]; //group添加动画数组,group中动画对象并发执行 [group setAnimations:@[animation1, animation2]]; [group setDuration:4.0f]; [_p_w_picpathView.layer addAnimation:group forKey:@"group"];
完整的工程和代码见:https://github.com/winann/iOS-Animation
工程中的动画实现方法比较全,而且都有注释,大家可以直接把工程下载下来,边看边练习一下。
名称栏目:iOS动画:UIView动画和CALayer动画(CABasicAnimation、CAKeyframeAnimation的使用)
路径分享:http://myzitong.com/article/jocpeo.html