目前我正在使用
UIWebView
在我的本机 iOS 应用程序中显示动画 svg 文件。
只要应用程序位于前台,CPU 使用率就会不断升高,但效果很好。
有没有更好的方法来显示 svg 文件而不使用
UIwebView
我已经尝试过许多第三方库,但所有库都仅适用于静态 svg 文件,不适用于动画 svgs
我尝试过以下
https://github.com/mchoe/SwiftSVG
https://github.com/exyte/Macaw
https://github.com/onmyway133/Snowflake
https://github.com/SVGKit/SVGKit
我的应用程序支持iOS 9及以上版本,我的代码在Swift3
这是我尝试显示的 svg 文件的链接
首先在你的 podfile 中安装 pod
pod `SVGKit`
然后将库导入到视图控制器文件中
import SVGKit
然后创建 SVGKImageObjectView 对象并将其添加到您的视图中
let svgImage = SVGKFastImageView(svgkImage : SVGKImage(contentOf:Bundle.main.url(forResource: "animated", withExtension : "svg")!))
self.view.addSubview(svgImage)
要使 SVG 动画化,您可以使用播放功能
svgImage.svgKImage.play()
您还可以设置框架和布局
svgImage.frame = CGRect(x:0, y:0, width:200, height: 200)
svgImage.center = self.view.center
你应该看看SVGKit!
该库基于核心动画。
参考本教程,
首先安装 pod 或手动将 SVGKit 安装到您的项目中。
然后将 svg 文件拖放到您的项目中。
然后你可以做类似的事情,
UIView *myView = [[UIView alloc]initWithFrame:CGRectMake(20, 70, 300, 300)];
myView.backgroundColor = [UIColor yellowColor];
[self.view addSubview:myView];
// SVGKImage *image = [SVGKImage imageWithContentsOfFile:@"animated-svg-icon"];
SVGKImage *image = [SVGKImage imageNamed:@"cd-icon.svg"];
[self animateCALayer:image.CALayerTree duration:2.0];
[myView.layer addSublayer:image.CALayerTree];
这里
cd-icon.svg
是svg图像。将所有 html、js 和 css 文件放入您的捆绑包中! (将 svg 的整个文件夹放入您的项目中)
如果您遇到任何与
CocoaLumberjack
相关的错误,请在您的项目中安装 pod 'CocoaLumberjack'
,并将 @import CocoaLumberjack;
中的
#import "CocoaLumberjack.h"
替换为
SVGKit-prefix.pch
按照我提到的一步一步进行。你就完成了。您将在
UIView
而不是 webview
中显示 svg。