如何在不使用 UIWebView 的情况下在 iOS 中显示动画 svg 文件

问题描述 投票:0回答:2

目前我正在使用

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 文件的链接

http://www.mediafire.com/file/04ojy6t4e3c41lv/03d.svg

ios iphone swift svg-animate
2个回答
0
投票

首先在你的 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

-1
投票

你应该看看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。

© www.soinside.com 2019 - 2024. All rights reserved.