如何在我的 iOS 应用程序中使用 svg 图像

Posted

技术标签:

【中文标题】如何在我的 iOS 应用程序中使用 svg 图像【英文标题】:How can I use svg images within my iOS application 【发布时间】:2014-05-19 07:42:31 【问题描述】:

我想删除用于我的 ios 应用程序的 .png 文件并添加 .svg 文件而不是那些。我如何在 Xcode 中做到这一点。我想使用 svg 图像作为背景和所有图标、按钮。

谢谢

【问题讨论】:

【参考方案1】:

简而言之:您必须转换为特定大小的 PDF,Xcode (6+) 将通过在编译时生成相应的 @1x、@2x 和 @3x PNG 来帮助您。 使用 PDF 的原因是因为 PDF 包含用作@1x png 的像素大小的大小信息。 目前还没有对它的本机运行时支持,尽管我听说有库可以做到这一点。

看到这个答案:https://***.com/a/25804358/3099609

以及引用的博文:http://martiancraft.com/blog/2014/09/vector-images-xcode6/

【讨论】:

【参考方案2】:

是的!!!

IOS safari 从 3.1 版开始支持 svg http://caniuse.com/svg

据我了解,ios支持使用带有图片标签http://phrogz.net/SVG/svg-via-img.html的svg

IE

<img src="myimage.svg"/>

一般来说,为了与早期浏览器兼容,内联 svg 应该在像这样的 xhtml 文档中提供。

 <!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml"><head> 
  <title>Create SVG Elements HTML</title>
  <style type="text/css" media="screen">
    body  background:#eee; margin:0 
    svg 
      display:block; border:1px solid #ccc; position:absolute;
      top:5%; left:5%; width:90%; height:90%; background:#fff;
    
    .face  stroke:#000; stroke-width:20px; stroke-linecap:round 
  </style>
</head><body>
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="-350 -250 700 500">
    <circle r="200" class="face" fill="red" />
  </svg>
  <script type="text/javascript"><![CDATA[
    var svg  = document.getElementsByTagName('svg')[0];
    var svgNS = svg.getAttribute('xmlns');

    function createOn( root, name, attrs )
      var el = document.createElementNS(svgNS,name);
      for (var attr in attrs)
        if (attrs.hasOwnProperty(attr)) el.setAttribute(attr,attrs[attr]);
      
      return root.appendChild(el);
    

    createOn( svg, 'path', 
      fill:"none", "class":"face", transform:"translate(-396,-230)",
      d:"M487.41,282.411c-15.07,36.137-50.735,61.537-92.333,61.537 \
        c-41.421,0-76.961-25.185-92.142-61.076"
    );
    createOn( svg, 'circle',  cx:-60, cy:-50, r:20, fill:'#000' );
    createOn( svg, 'circle',  cx: 60, cy:-50, r:20, fill:'#000' );
  ]]></script>
</body></html>

SVG 文件应使用通常已在服务器上配置的 mimi 类型“image/svg+xml”交付,但如果服务器不是最新的,则可以使用 php 包装器交付 svg 以获得正确的 mimi 类型咪咪类型..

<?php
   header("Content-Type: image/svg+xml"); /* my host is to cheap to already support svg */
   include("mysvg.svg");
?>

【讨论】:

我的应用程序是用 Native Objective c 编写的。我可以使用 svg 吗? 我没有在本机 OBJECTIVE C 中为您提供的示例代码,但这个 url 在这方面有更多信息。 mytechspace.com/2012/03/…

以上是关于如何在我的 iOS 应用程序中使用 svg 图像的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 swift 显示 .svg 图像

SVGKit:如何使用 SVGKit 渲染引用 iOS 设备照片的 SVG XML 字符串

如何制作具有纵横比的响应式 SVG/CSS 背景

如何在 iOS 上整合社交媒体进行照片分享?

如何在我的 OpenCV iOS 应用程序中捆绑/存储应用程序图像数据?

使用 SVG(作为 PDF)的自定义 UITabBarItem 图像在 Xcode ios 中应该是啥尺寸?