本文将简单实现iOS快速路径绘制动画。
什么核心动画(Core Animation)、CAShapeLayer、UIBeizerPath等这些,这篇文章就不多说了。
反正看完这篇文章可以实现以下两种效果,虽然这两种效果很弱智,但高楼从地起嘛,懂了原理可以实现越来越复杂的动画组。Demo在最后可以下载,代码很烂,大神轻喷。
注:二维码效果来源:文章,因为原文里的部分功能无法重现,故在此重新写了个Demo。
案例一:快速实现路径动画
- 步骤:
1.方案有很多,可以通过Sketch软件,先绘制出想要的图,然后导出SVG,再用PaintCode软件将SVG文件转换成所需的代码。这里我直接通过PaintCode绘制路径图,导出代码啦。
2.打开PaintCode,使用钢笔工具,随便画一条线,在软件的下方会直接生成贝塞尔曲线的代码(PS:也可以根据自己需要更改所使用的编程语言)。
3.复制生成的代码,去Xcode创建一个UIView。
1 | class ESSVGView: UIView { |
4.接着去ViewController,添加到视图里就OK了。简单粗暴!
1 | class ViewController: UIViewController { |
案例二:快速实现二维码动画
- 步骤:
1.首先找一个可以生成二维码并能导出SVG的网站,这里我用的是草料二维码生成,选择其他格式。
2.下载SVG格式文件
3.这里可以用文本编辑打开一下这个SVG文件,其实里面就是个XML,注意这些use就是二维码中一个个小方块。
每个方块x,y都知道了,width和height是固定值都是12。
4.接下来将SVG格式文件拖到工程,并用XML来解析这个文件
1 | override init(frame: CGRect) { |
5.使用XML代理的2个方法进行处理
每当解析到一个新标签,这里就会被调用
1 | func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) |
整个 svg 文件解析完毕后,这里就会被调用
1 | func parserDidEndDocument(_ parser: XMLParser) |
6.最后我就直接把代码贴上来,关键地方都注释了干啥滴。
1 | class ESXML: UIView { |