首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Swift将SVG图像显示为UIImage

如何使用Swift将SVG图像显示为UIImage
EN

Stack Overflow用户
提问于 2016-03-09 02:42:42
回答 2查看 6.6K关注 0票数 4

我需要将GMSMarker的图标(在谷歌地图上)更改为SVG图像(这是我从网络上请求的),你知道怎么做吗?我已经看到一些库可以做到这一点,但不确定如何使用它们!我基本上需要将SVG图像转换为UIImage!

EN

回答 2

Stack Overflow用户

发布于 2016-03-09 03:02:02

我没有足够的名气来发表评论,所以我不得不在答案中写下这句话,所以如果它听起来更像是评论的话,我很抱歉:

不管怎样,你说你需要把SVG图像转换成UIImage。我从来没有这样做过,但我以前从NSData创建过一个UIImage。也许有一种方法可以将SVG转换为NSData,然后再转换为UIImage (我不确定,您可能必须将其从SVG转换为jpeg,然后再转换为NSData。我需要挖掘出我所做的那个项目。)

或者,您可以使用名为init?(contentsOfFile路径: UIImage )的字符串初始化器。这个初始化器接受一个参数,该参数是一个表示图像路径的字符串。

再说一次,我还没有尝试过这些。只是想帮上忙。

票数 2
EN

Stack Overflow用户

发布于 2016-06-11 01:59:06

两种可能的方法。

首先,也是最简单的方法是将SVG导出为PNG格式。大多数应用程序都允许这样的修改--例如,在Mac上,你可以使用Sketch。但是它失去了SVG的分辨率无关性的优势,所以它并不理想。你可以导出各种分辨率的PNG,并将1x/2x/3x与你的应用程序一起发布。

另一种选择是创建一个从UIView派生的自定义类,并覆盖drawRect。在这种情况下,使用函数来绘制SVG,您可以通过打开SVG来查看(它是可读的,就像您知道的文本文件一样)。drawRect应该看起来像这样:

代码语言:javascript
运行
复制
let bezierPath = UIBezierPath()
bezierPath.moveToPoint(CGPoint(x: 11.5, y: 17.5))
bezierPath.addLineToPoint(CGPoint(x: 28.5, y: 17.5))
// etc - you get the idea..
bezierPath.closePath()

现在,当您插入自定义UIView时,它将自动绘制自己。这是PaintCodeApp使用的方法(请参阅www.paintcodeapp.com)。您可以使用该应用程序的试用版来生成代码,或者购买该应用程序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35875423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档