温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

iOS动画:UIView动画和CALayer动画(CABasicAnimation、CAKeyframeAnimation的使用)

发布时间:2020-06-02 14:15:53 来源:网络 阅读:15766 作者:winann 栏目:移动开发

    iOS中的动画有两种实现方式,一种是UIView来实现动画,另一种动画是通过CALayer来实现,下面介绍两种动画的简单实现:



一、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


工程中的动画实现方法比较全,而且都有注释,大家可以直接把工程下载下来,边看边练习一下。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI