我需要将GMSMarker(在Google地图上)的图标更改为SVG图像(我正在从网上请求),任何想法如何做到这一点?我见过几个可以做到这一点但不确定如何使用它们的库!我基本上需要将SVG图像转换为UIImage!
答案 0 :(得分:2)
我没有足够的声誉来评论,所以我不得不把它放在一个答案中,如果听起来更像是评论,那就很抱歉:
无论如何,你说你需要将SVG图像转换为UIImage。我从来没有这样做,但我之前已经从NSData创建了一个UIImage。也许有一种方法可以将SVG转换为NSData然后转换为UIImage(您可能必须将其从SVG转换为jpeg然后转换为NSData,我不确定。我需要挖掘项目,我在那里做了。 )
或许您可以使用名为init的UIImage初始化程序?(contentsOfFile path:String)。此初始化程序采用一个参数,该参数是表示图像路径的String。
同样,我还没有尝试过这些。只是想要一些帮助。
答案 1 :(得分:0)
两种可能的方法。
首先,最简单的方法是将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)。您可以使用该应用的试用版来生成代码,或购买该应用。