我需要一个GMSMarker(谷歌地图)的图标更改为SVG图像(这我从网上申请),任何想法一个UIImage如何做到这一点?我见过一些可以做到这一点但不确定如何使用它们的图书馆!我基本上需要将SVG图像转换为UIImage!如何显示SVG图像与斯威夫特
4
A
回答
2
我没有足够的信誉发表评论,所以我不得不把这个答案,很抱歉,如果这听起来更像是一个注释:
不管怎样,你说你需要一个SVG图像转换成UIImage的。我从来没有这样做过,但是我之前已经从NSData创建了一个UIImage。也许有一种方法可以将SVG转换为NSData,然后转换为UIImage(您可能需要将它从SVG转换为jpeg,然后转换为NSData,我不确定,我需要挖掘项目。 )
或者,也许你可以使用UIImage的初始化文件,称为init(contentsOfFile路径:字符串)。此初始化程序接受一个参数,该参数是一个表示图像路径的字符串。
同样,我还没有尝试任何的这个呢。试图成为一些帮助。
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)。您可以使用应用程序的试用版来生成代码,或购买应用程序。
相关问题
- 1. 斯威夫特显示图像的UIImageView
- 2. 斯威夫特 - 图像不显示
- 3. 斯威夫特 - JSQMessagesViewController与斯威夫特
- 4. 如何与斯威夫特
- 5. 斯威夫特 - 显示与按键
- 6. 与斯威夫特
- 7. 斯威夫特2斯威夫特3
- 8. 斯威夫特MapKit不显示指示
- 9. 斯威夫特 - 图像色彩复位时显示警告
- 10. 斯威夫特游乐场图像不显示它应该
- 11. 斯威夫特3页:如何显示使用URL与API
- 12. 斯威夫特collectionViewCells没有显示
- 13. 显示只有斯威夫特
- 14. 斯威夫特scaleAspectFit只图像
- 15. 斯威夫特 - cellForItemAtIndexPath调整图像
- 16. 移动图像在斯威夫特
- 17. 指定图像键值(斯威夫特)
- 18. 斯威夫特 - 保存图像交替
- 19. 斯威夫特
- 20. 斯威夫特
- 21. 斯威夫特
- 22. 斯威夫特
- 23. 斯威夫特
- 24. 斯威夫特
- 25. 斯威夫特
- 26. 斯威夫特
- 27. 斯威夫特
- 28. 斯威夫特
- 29. 斯威夫特
- 30. 斯威夫特
不能完全肯定你正在尝试做的,但它会使用WKWebView和公正加载SVG在一个选择吗?如果没有,也许有一种方法可以使用webview将svg解码为图像,并使用它... –