我怎么能在iOS中显示动画svg文件,而不使用UIWebView

7kjnsjlb  于 2023-01-14  发布在  iOS
关注(0)|答案(2)|浏览(189)

目前我正在使用UIWebView来显示动画svg文件在我的原生iOS应用程序。
这工作正常,除了CPU的使用率不断上升,只要应用程序在前台。
有没有更好的方法不使用UIwebView显示svg文件
我已经尝试了许多第三方库,但所有的作品只与静态svg文件,而不是动画svg
我试过跟踪
https://github.com/mchoe/SwiftSVG
https://github.com/exyte/Macaw
https://github.com/onmyway133/Snowflake
https://github.com/SVGKit/SVGKit
我的应用支持iOS 9及更高版本,我的代码位于Swift3
下面是我试图显示的svg文件的一个链接
http://www.mediafire.com/file/04ojy6t4e3c41lv/03d.svg

7jmck4yq

7jmck4yq1#

首先在您的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具有动画效果,可以使用play函数

svgImage.svgKImage.play()

您还可以设置框架和布局

svgImage.frame  = CGRect(x:0, y:0, width:200, height: 200)
svgImage.center = self.view.center
vhmi4jdf

vhmi4jdf2#

你应该看看SVGKit
此库基于核心动画。
参考this tutorial
首先安装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',并在SVGKit-prefix.pch中将@import CocoaLumberjack;替换为#import "CocoaLumberjack.h"
按照我提到的一步一步来做。你就完成了。你将在UIView中显示svg而不是webview

相关问题