SVGKit:如何将一个.svg文件拆分成几个UIView?

时间:2014-05-28 17:14:18

标签: cocoa-touch svg svgkit

如何使用SVGKit探索.svg文件?

我有问题将一个.svg文件拆分为多个UIView

我尝试了什么

这是我到目前为止所做的。如果您对我的工作方式有任何了解,谢谢!

  1. 我创建了一个.svg文件。我把名字“AAAA”给了两个对象中的一个。 enter image description here

  2. 我将.svg文件添加到我的项目中。

  3. 然后,我使用SVGKit来探索我的.svg文件,其中包含以下代码:

  4. 代码:

     SVGKImage* newImage = [SVGKImage imageNamed:@"Untitled-1"];
    
     NSString* tagToFind = @"AAAA";
     NodeList* result = [newImage.DOMDocument getElementsByTagName:tagToFind];
    
     for( Element* domElement in result )
     {
         SVGElement* svgElement = (SVGElement*) domElement;
     }
    

    问题:

    1. .svg图片已正确加载,我可以显示它。这是有效的!但是......

    2. newImage.DOMDocument似乎并不反映实际文件。以下是NSLog给出

    3. 的内容
        

      节点:#document(DOCUMENT)值:[(null)] @@ 0属性+ 0 x   儿童

      1. result数组为空。
      2. 说明

        我已使用.svg创建Illustrator,然后尝试在Inkscape上添加信息。任何解决方案都适合我。这是.png文件。

        <?xml version="1.0" encoding="utf-8"?>
        <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
        <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
        <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
             width="623.619px" height="481.89px" viewBox="0 0 623.619 481.89" enable-background="new 0 0 623.619 481.89"
             xml:space="preserve">
        <g id="AAAA" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://creativecommons.org/ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" sodipodi:docname="Untitled-1.svg" inkscape:version="0.48.2 r9819">
        
                <rect id="AAAA_1_" x="482.945" y="43.653" fill="#FF0000" stroke="#000000" stroke-miterlimit="10" width="57.046" height="68.157"/>
        </g>
        <g id="BBBB_1_">
            <polygon id="BBBB" fill="#2824B3" stroke="#000000" stroke-miterlimit="10" points="579.31,259.945 532.676,261.485 
                507.507,300.775 491.632,256.898 446.488,245.101 483.31,216.445 480.578,169.865 519.213,196.03 562.667,179.039 549.722,223.867 
                    "/>
        </g>
        </svg>
        

1 个答案:

答案 0 :(得分:0)

正确的代码是

SVGKImage* newImage = [SVGKImage imageNamed:@"Untitled-1"];

NSString* tagToFind = @"BBBB";

Element* result = [newImage.DOMTree getElementById:tagToFind];