我需要将GMSMarker的图标(在谷歌地图上)更改为SVG图像(这是我从网络上请求的),你知道怎么做吗?我已经看到一些库可以做到这一点,但不确定如何使用它们!我基本上需要将SVG图像转换为UIImage!
发布于 2016-03-09 03:02:02
我没有足够的名气来发表评论,所以我不得不在答案中写下这句话,所以如果它听起来更像是评论的话,我很抱歉:
不管怎样,你说你需要把SVG图像转换成UIImage。我从来没有这样做过,但我以前从NSData创建过一个UIImage。也许有一种方法可以将SVG转换为NSData,然后再转换为UIImage (我不确定,您可能必须将其从SVG转换为jpeg,然后再转换为NSData。我需要挖掘出我所做的那个项目。)
或者,您可以使用名为init?(contentsOfFile路径: UIImage )的字符串初始化器。这个初始化器接受一个参数,该参数是一个表示图像路径的字符串。
再说一次,我还没有尝试过这些。只是想帮上忙。
发布于 2016-06-11 01:59:06
两种可能的方法。
首先,也是最简单的方法是将SVG导出为PNG格式。大多数应用程序都允许这样的修改--例如,在Mac上,你可以使用Sketch。但是它失去了SVG的分辨率无关性的优势,所以它并不理想。你可以导出各种分辨率的PNG,并将1x/2x/3x与你的应用程序一起发布。
另一种选择是创建一个从UIView派生的自定义类,并覆盖drawRect。在这种情况下,使用函数来绘制SVG,您可以通过打开SVG来查看(它是可读的,就像您知道的文本文件一样)。drawRect应该看起来像这样:
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)。您可以使用该应用程序的试用版来生成代码,或者购买该应用程序。
https://stackoverflow.com/questions/35875423
复制相似问题