一直就很痴迷与app中的动画效果,适当的运用动画效果,可以使我们的app看起来更炫酷,所以闲来无事,就做了一个视图加载中的小demo,往后还会一点点制作更强大更炫酷的动画效果,我们一起加油吧。顺便给大家推荐几个很好的开源的动画库:
·lottie by Airbnb,自从有了这个开源库,简直节省了开发人员相当一部分的时间,因为运用AE制作的动画效果,可以导出JSON格式,然后运用Lottie就可以轻松的完成酷炫的动画效果,值得一用,很棒。
·IBAnimatable ib类的交互,不用写代码,就可以完成动画效果
网上找的视频转gif的工具,效果有点low,但其实,真是实际运行是木有那个黑色框框的,所以不要看到边框就走了啊,哈哈哈。写的也很简单,相信大家,一看就懂,喜欢的不喜欢的都请大家留言,多多交流,相互学习,共同进步,为了我们远大的前程!!最近电视剧看的有点多了啊,话不多说,先来个效果图吧。
所用到的知识点:
·CALayer、CAShapeLayer、CAGradientLayer三种layer。
·UIBeizerPath的使用,这里只是简单的画一个圆,并未用到,二次,三次贝塞尔曲线,所以很容易理解
·CAKeyframeAnimation 关键帧动画
首先拿到动画效果的时候,不要怕,即使你真的很怕,哈哈,但是气势不能输,但是首先一层一层一步一步的分析,其实并没有想象中的那么难。
1.CAGradientLayer:很容易实现上图按钮的渐变效果,核心代码
CAGradientLayer *layer = [[CAGradientLayer alloc] init];
layer.frame = self.bounds;
layer.colors = arr;
layer.startPoint = CGPointMake(0, 1);
layer.endPoint = CGPointMake(0, 0);
[self.layer addSublayer:layer];
2.CAShapeLayer:指定小圆点的位置
CAShapeLayer *dotlayer = [[CAShapeLayer alloc] init];
dotlayer.frame = CGRectMake( DOT_WIDTH*index, 3, DOT_WIDTH, DOT_HEIGHT);
3.UIBezierPath:在指定位置绘制会小圆圈
UIBezierPath *dotPath = [UIBezierPath bezierPathWithArcCenter:CGPointMake(R, R) radius:R startAngle:M_PI_2 endAngle:2.5*M_PI clockwise:true];
dotlayer.path = dotPath.CGPath;
dotlayer.fillColor = self.dotColor.CGColor;
4.CAKeyframeAnimation:给layer添加动画
CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale"];
animation.values =@[@(0),@(0.25),@(0.5), @(0.75),@(0.9),@(1),@(0.9),@(0.75),@(0.5),@(0.25),@(0)]; animation.duration = 1.35;
animation.beginTime = CACurrentMediaTime() + 0.2*index;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; animation.repeatCount = MAXFLOAT;
好了,先到这里吧,后期再补充更多关于核心动画的知识。敬请期待。。。。。