SVGKit使用重要操作

本文介绍SVGKit库的使用方法,包括加载SVG图片、通过点击获取元素及元素区域等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SVGKit的下载、集成在上篇文章中(http://blog.youkuaiyun.com/guobing19871024/article/details/52643358)提到过,这篇文章中介绍一下在实际使用过程中的一些重要操作:

1、加载svg图片并显示:

<pre name="code" class="html"><span style="font-family: Arial, Helvetica, sans-serif;">//加载本地文件,也可以加载网络文件,</span><span style="font-family: Arial, Helvetica, sans-serif;">SVGKImage提供了相应方法</span>
SVGKImage *svgImg=[SVGKImage imageWithContentsOfFile:svgName];//加载svg图
//文档上推荐使用 SVGKFastImageView,显示比较快,也不用做其他操作;当然也可以有其他的方法,具体参考文档,只不过麻烦一点
SVGKFastImageView<span style="font-family: Arial, Helvetica, sans-serif;">   *contentView=[[SVGKFastImageView alloc] initWithSVGKImage:svgImg];//用于svg图的显示</span>

 


2、根据svg图上点击的点获取点击点所在的CALayer

CGPoint hitPoint = [recognizer locationInView:self.contentView];//获取到点击到的点:地图上的点而不是scrollView上的
CALayer *svgLayer= ((SVGKFastImageView*)self.contentView).image.CALayerTree;//获取到svg图片的layer
SVGKImage *svgImage=((SVGKFastImageView*)self.contentView).image;//获取到svg图片
//显示的内容和实际的图片的比例:SVGKFastImageView不能够改变
CGSize actualPercentage=self.zoomedSize;//对应的缩放比例,不然获取的展示在图上不准
//获取实际在SVGKFastImageView上点击的点
hitPoint=CGPointApplyAffineTransform( hitPoint, CGAffineTransformInvert( CGAffineTransformMakeScale(actualPercentage.width, actualPercentage.height)));
//获取点击点层包含实际点击点的图层
CALayer *hitLayer = [svgLayer hitTest:hitPoint];                                                                                //SVGKFastImageView的图层不能改变,即是说改变的图层不能再屏幕上显示出来,因此必须自定义一个图层(和点击选中的图层frame一样)
CALayer *absoluteCloneHitLayer = [svgImage newCopyPositionedAbsoluteOfLayer:hitLayer];


3、点击svg图片获取点击的元素

SVGKImage *svgImage=((SVGKFastImageView*)contentView).image;//获取到svg图片
//获取SVGDocument
SVGDocument *domDocument=svgImage.DOMDocument;
NSString *xmlTagID = [<span style="font-family: Arial, Helvetica, sans-serif;">absoluteCloneHitLayer     </span>valueForKey:kSVGElementIdentifier];
Element *svgElement = [domDocument getElementById:xmlTagID];
    //    if([svgElement isKindOfClass:[SVGPathElement class]]){
    //        svgPathElement=(SVGPathElement *)svgElement;
    //    }
return svgElement;

4、获取选中svg元素所在区域的CGRect

//获取元素所在区域的CGRect
NSString *identity=[element getAttribute:@"id"];
SVGKImage *svgImage=((SVGKFastImageView*)contentView).image;
CALayer *cloneLayer = [svgImage newCopyPositionedAbsoluteLayerWithIdentifier:identity];
return cloneLayer.frame;






评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值