美文网首页移动开发
SVG在iOS开发中的应用

SVG在iOS开发中的应用

作者: coldLeon | 来源:发表于2018-03-17 23:42 被阅读495次

    何为SVG

    简言之,svg就是一种二维的矢量图形格式,可以用过Adobe公司的AI来生成。

    应用场景

    直接进入主题,到底有哪些开发场景我们可以用SVG?SVG究竟有什么优势?

    1.绘制简单的图形,无需额外增加引入图片的开销

    先看一张网上找的动图


    9_2-2.gif

    推特的启屏logo其实是个很简单的图案,我们普通的app中也不乏这类简单的图片,直接使用图片的优点是简单,所见即所得,无需我们做过多的额外编码工作,缺点是需要占用资源来存储这个图片。如果通过SVG的方式,我们只需要获知这个SVG中的绘制路径path,再运用到我们程序中执行绘制,基本不消耗资源,也可得到相同的视觉效果,更重要的一点,通过这种方式绘制得到图案,我们永远不用去担心图案过度放大而导致的锯齿问题,岂不美哉。
    其实在这里svg只不过是我们获取pah的一个载体而已,我们真正使用到的是就是path。那么问题来了,我们如何制作svg来获得path呢?前面有提到AI(并不是人工智能的AI),这里介绍另外一个工具--PaintCode。paintCode提供快捷的绘制工具以及path的代码生成功能,我们只需要从中复制出路径即可,如图


    屏幕快照 2018-03-17 下午11.30.45.png

    这里从网上找了一个对钩的图片,然后再用钢笔工具在上面描点,绘制出他的路径,paintcode自动就在底下代码区生成了OC的代码,当然,也可以生成swift,或者安卓端的java代码。接下来就是把路径绘制到我们的视图上了.
    先添加一个CAShapeLayer

    -(void)addLayerToContainerView
    {
        //self.containerView是我添加的一个显示nike对钩的UIVIew容器
        CAShapeLayer *layer = [[CAShapeLayer alloc]init];
        layer.path = [self setBezierPath].CGPath;
        layer.bounds = CGPathGetBoundingBox(layer.path);
        
        self.containerView.backgroundColor = [UIColor blueColor];
        layer.position = CGPointMake(self.view.layer.bounds.size.width / 2, self.view.layer.bounds.size.height/ 2);
        layer.fillColor = [UIColor whiteColor].CGColor;
        [self.containerView.layer addSublayer:layer];
    }
    

    获取path

    -(UIBezierPath *)setBezierPath
    {
        //  这里面加入的就是刚刚PaintCode粘贴出来的代码
    }
    

    接下来要做的事就是给containerView加动画咯,实现方式就太多了,自己实现吧~
    先到这里,后面会再介绍一下其他的应用场景。

    相关文章

      网友评论

        本文标题:SVG在iOS开发中的应用

        本文链接:https://www.haomeiwen.com/subject/ysssqftx.html