ios svg_ios sdwebview svg - CSDN
  • 使用svg图片

    2019-02-19 14:32:53
    使用svg图片IOS 使用SVG图标一,使用第三方框架 SVGKit1. svg 图片显示 OC 代码2. svg 图片显示 swift 代码3. svg 集成方式二,使用UIWebView/WKWebView进行加载Android 使用SVG图标新的改变功能快捷键合理的创建...

    SVG文件简介

    SVG文件是矢量图标准之一,特点是可以缩放,并且可以用可以阅读的源代码的方式(而不是二进制)来存储图形信息。比如如下文件就是一个svg文件:<svgxmlns=“http://www.w3.org/2000/svg"viewBox="00350100”><markerid="arrowhead"markerWidth="10"markerHeight=&q

    SVG文件是矢量图标准之一,特点是可以缩放,并且可以用可以阅读的源代码的方式(而不是二进制)来存储图形信息。比如如下文件就是一个svg文件:

    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 350 100"> 
    <defs> 
    <marker id="arrowhead" markerWidth="10" markerHeight="7" 
    refX="0" refY="3.5" orient="auto"> 
    <polygon points="0 0, 10 3.5, 0 7" /> 
    </marker> 
    </defs> 
    <line x1="0" y1="50" x2="250" y2="50" stroke="#000" 
    stroke-width="8" marker-end="url(#arrowhead)" /> 
    </svg> 
    
    

    它是一个箭头图。可以使用UIWebView视图加载此文件并显示。首先把SVG文件作为资源文件加入工程,命名为1.svg。

    IOS 使用SVG图标

    一,使用第三方框架 SVGKit

    1. svg 图片显示 OC 代码

    分类

    #import <UIKit/UIKit.h>
    
    @interface UIImage (SVGManager)
    /**
     show svg image
    
     @param name svg name
     @param size image size
     @return svg image
     */
    + (UIImage *)svgImageNamed:(NSString *)name size:(CGSize)size;
    @end
    
    
    #import "UIImage+SVGManager.h"
    #import "SVGKImage.h"
    
    @implementation UIImage (SVGManager)
    + (UIImage *)svgImageNamed:(NSString *)name size:(CGSize)size {
        SVGKImage *svgImage = [SVGKImage imageNamed:name];
        svgImage.size = size;
        return svgImage.UIImage;
    }
    @end
    
    
    

    SVGKImage类:

    /**
     show svg image
     
     @param name svg name
     @param size image size
     @param tintColor image color
     @return svg image
     */
    + (UIImage *)svgImageNamed:(NSString *)name size:(CGSize)size tintColor:(UIColor *)tintColor;
    
    
    + (UIImage *)svgImageNamed:(NSString *)name size:(CGSize)size tintColor:(UIColor *)tintColor {
        SVGKImage *svgImage = [SVGKImage imageNamed:name];
        svgImage.size = size;
        CGRect rect = CGRectMake(0, 0, svgImage.size.width, svgImage.size.height);
        CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(svgImage.UIImage.CGImage);
        BOOL opaque = alphaInfo == kCGImageAlphaNoneSkipLast
        || alphaInfo == kCGImageAlphaNoneSkipFirst
        || alphaInfo == kCGImageAlphaNone;
        UIGraphicsBeginImageContextWithOptions(svgImage.size, opaque, svgImage.scale);
        CGContextRef context = UIGraphicsGetCurrentContext();
        CGContextTranslateCTM(context, 0, svgImage.size.height);
        CGContextScaleCTM(context, 1.0, -1.0);
        CGContextSetBlendMode(context, kCGBlendModeNormal);
        CGContextClipToMask(context, rect, svgImage.UIImage.CGImage);
        CGContextSetFillColorWithColor(context, tintColor.CGColor);
        CGContextFillRect(context, rect);
        UIImage *imageOut = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return imageOut;
    }
    
    

    2. svg 图片显示 swift 代码

    1. swift中使用webview加载svg文件:
    //完整代码如下:
    
    import UIKit 
    @UIApplicationMain 
    class AppDelegate: UIResponder, UIApplicationDelegate { 
         var window: UIWindow? 
        func application(_ application: UIApplication,       didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool 
        { 
    	self.window = UIWindow(frame: UIScreen.main.bounds) 
    	let page = Page() 
    	page.view.backgroundColor = .blue 
    	self.window!.rootViewController = page 
    	self.window?.makeKeyAndVisible() 
    	return true 
    	} 
    } 
    class Page: UIViewController { 
    	var count = 0 
    	var webview : UIWebView! 
    	var webview1 : UIWebView! 
    	override func viewDidLoad() { 
    		super.viewDidLoad() 
    		webview = UIWebView() 
    		webview?.frame = CGRect(x: 0, y: 100, width: 100, height: 100) 
    		view.addSubview(webview!) 
    		webview1 = UIWebView() 
    		webview1.frame = CGRect(x: 0, y: 200, width: 50, height: 50) 
    		view.addSubview(webview1!) 
    		let path: String = Bundle.main.path(forResource: "1", ofType: "svg")! 
    		let url: NSURL = NSURL.fileURL(withPath: path) as NSURL 
    		let request: NSURLRequest = NSURLRequest(url: url as URL) 
    		webview?.loadRequest(request as URLRequest) 
    		webview1.loadRequest(request as URLRequest) 
    		} 
    } 
    
    
    2. swift使用SVGKit框架
    1. 我们按照正常的swift创建我们的项目,然后我们按照我们的GitHub的要求(Build the static library),这里我就不翻译了其实很简单的,创建了我们的静态库.a文件以及usr文件夹,这里注意一定要按照GitHub上的选择“Debug-universal”的文件夹里面的文件,否则会出错,选择iphone或者模拟器的文件都不能够完整的运作。
      新建链接文件OCHeader.h然后 我们到 build setting里面进行设置,注意路径,如果建在某个文件夹下面的,要把文件夹名称带上,xxx/xxx.h否则会报错。
      在这里插入图片描述

    2. 然后,我们在这个OCHeader.h设置我们要导入的一些类

    #ifndef svgtest_OCHeader_h
    #define svgtest_OCHeader_h
    #import "SVGKit.h"             //这就是我要添加的SVGKit的类,方便我的swift直接调用
    #import "SVGKImage.h"  //同上
    
    #endif
    
    
    1. 一次添加全局的swift都可以直接使用,
      然后我在我的ViewControler中写我们的代码把我先设置了一个button让其点击后加载我的svg格式的文件,svg格式的文件事先导入到了我的项目。
    import UIKit
    
    //cnblog里面没有swift 将就一下用了c的模板 代码里面对比了oc的例子指导代码,我们可以看到很多不同点。
    class ViewController: UIViewController {
        
        @IBOutlet var firstview: UIView!
        @IBAction func showsvgbuttonclic(sender: AnyObject) {
            var svgim:SVGKImage=SVGKImage(named: "Rsimplified.svg")
            //SVGKImage* newImage = [SVGKImage imageNamed:@"myImage.svg"];
          
            var svgimview=SVGKLayeredImageView(SVGKImage: svgim)
            //SVGKImageView* imageView = [[SVGKLayeredImageView alloc] initWithImage:newImage];
            
            firstview.addSubview(svgimview)
            //[self.view addSubView:  [[SVGKLayeredImageView alloc] initWithImage:newImage];
            NSLog("showsvgbuttonclick")
           
        }
    
    

    3. svg 集成方式

    1. 使用CocoaPods集成, 此方法支持模拟器运行.

    (1)在Podfile中加入代码

    pod 'SVGKit', :git => 'https://github.com/SVGKit/SVGKit.git', :branch => '2.x'
    #因为SVGKit本身集成了一个另外的一个第三方,所以也要集成一下.
    pod 'CocoaLumberjack'
    

    (2)命令行下cd到 Podfile对应的目录,运行

    pod install 
    
    1. 直接使用framework.(此方法会分离模拟器架构, 不支持模拟器运行.想了解分离模拟器架构的可以看下.)

    (1). 从github上下载之后,打开文件夹的SVGKit-iOS.然后xcode选项,Product->Scheme->Edit Scheme

    在这里插入图片描述
    (2).如上图根据情况选择.然后command+b进行编译.
    在这里插入图片描述
    (3). 编译成功后,打开Products,Show in Finder.
    在这里插入图片描述

    (4). 随后选择你编译后相应的的文件夹,将libSVGKit-iOS.2.0.0.a和user文件夹一起拖入项目.
    在这里插入图片描述

    (5) 由于SVGKit依赖第三方.CocoaLumberjack,有兴趣的小伙伴可以自行了解一下.
    在此,我们需要将CocoaLumberjack.framework处理后放到我们的项目中.
    在这里插入图片描述
    (6)同样是在SVGKit-iOS中,找到需要开发的那个CocoaLumberjack.framework.(此处有一个坑,就是SVGKit中的CocoaLumberjack.framework是包含模拟器的cpu架构的,会导你上传打包不成功.(可以统一使用pod集成,喜欢用真机测试的伙伴,也可以继续使用这种方法))
    (7)使用终端依次执行以下操作.将模拟器的cpu架构分离出来,保留并合并真机cpu架构.将处理后的CocoaLumberjack.framework拖入项目.最后添加一下需要的框架如下:
    CoreText
    CoreImage
    libxml2.dylib
    QuartzCore
    CoreGraphics
    UIKit

     #检测支持哪种框架
    lipo -info ./CocoaLumberjack.framework/CocoaLumberjack
    
    
    #分别将armv7和arm64分离出来
    mkdir armv7
    mkdir arm64
    lipo ./CocoaLumberjack.framework/CocoaLumberjack -thin arm64 -output ./arm64/CocoaLumberjack
    lipo ./CocoaLumberjack.framework/CocoaLumberjack -thin armv7 -output ./armv7/CocoaLumberjack
    
    lipo -info ./arm64/CocoaLumberjack
    lipo -info ./armv7/CocoaLumberjack
    
    
    #将分离出来的进行合并,并覆盖原文件
    lipo -create ./armv7/CocoaLumberjack ./arm64/CocoaLumberjack -output ./CocoaLumberjack.framework/CocoaLumberjack
    
    #删除之前分离的产物
    rm -rf ./arm64
    rm -rf ./armv7
    
    #再次进行检测支持的框架
    lipo -info ./CocoaLumberjack.framework/CocoaLumberjack
    
    
    
    
    
    
    
    
    

    二,使用UIWebView/WKWebView进行加载

    1. UIWebView加载svg图标
    NSString *svgPath = [[NSBundle mainBundle] pathForResource:@"svg名称" ofType:@"svg"];
    NSData *svgData = [NSData dataWithContentsOfFile:svgPath];
    NSString *reasourcePath = [[NSBundle mainBundle] resourcePath];
    NSURL *baseUrl = [[NSURL alloc] initFileURLWithPath:reasourcePath isDirectory:true];
    UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
    [webView loadData:svgData MIMEType:@"image/svg+xml" textEncodingName:@"UTF-8" baseURL:baseUrl];
    
    1. WKWebView加载svg图标
    NSString *svgPath = [[NSBundle mainBundle] pathForResource:@"svg名称" ofType:@"svg"];
    NSData *svgData = [NSData dataWithContentsOfFile:svgPath];
    NSString *reasourcePath = [[NSBundle mainBundle] resourcePath];
    NSURL *baseUrl = [[NSURL alloc] initFileURLWithPath:reasourcePath isDirectory:true];
    WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.bounds];
    [webView loadData:svgData MIMEType:@"image/svg+xml" characterEncodingName:@"UTF-8" baseURL:baseUrl];
    

    Android 使用SVG图标

    新的改变

    我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

    1. 全新的界面设计 ,将会带来全新的写作体验;
    2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
    3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
    4. 全新的 KaTeX数学公式 语法;
    5. 增加了支持甘特图的mermaid语法1 功能;
    6. 增加了 多屏幕编辑 Markdown文章功能;
    7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
    8. 增加了 检查列表 功能。

    功能快捷键

    撤销:Ctrl/Command + Z
    重做:Ctrl/Command + Y
    加粗:Ctrl/Command + B
    斜体:Ctrl/Command + I
    标题:Ctrl/Command + Shift + H
    无序列表:Ctrl/Command + Shift + U
    有序列表:Ctrl/Command + Shift + O
    检查列表:Ctrl/Command + Shift + C
    插入代码:Ctrl/Command + Shift + K
    插入链接:Ctrl/Command + Shift + L
    插入图片:Ctrl/Command + Shift + G

    合理的创建标题,有助于目录的生成

    直接输入1次#,并按下space后,将生成1级标题。
    输入2次#,并按下space后,将生成2级标题。
    以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

    如何改变文本的样式

    强调文本 强调文本

    加粗文本 加粗文本

    标记文本

    删除文本

    引用文本

    H2O is是液体。

    210 运算结果是 1024.

    插入链接与图片

    链接: link.

    图片: Alt

    带尺寸的图片: Alt

    居中的图片: Alt

    居中并且带尺寸的图片: Alt

    当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

    如何插入一段漂亮的代码片

    博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

    // An highlighted block
    var foo = 'bar';
    

    生成一个适合你的列表

    • 项目
      • 项目
        • 项目
    1. 项目1
    2. 项目2
    3. 项目3
    • 计划任务
    • 完成任务

    创建一个表格

    一个简单的表格是这么创建的:

    项目 Value
    电脑 $1600
    手机 $12
    导管 $1

    设定内容居中、居左、居右

    使用:---------:居中
    使用:----------居左
    使用----------:居右

    第一列 第二列 第三列
    第一列文本居中 第二列文本居右 第三列文本居左

    SmartyPants

    SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

    TYPE ASCII HTML
    Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
    Quotes "Isn't this fun?" “Isn’t this fun?”
    Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

    创建一个自定义列表

    Markdown
    Text-to-HTML conversion tool
    Authors
    John
    Luke

    如何创建一个注脚

    一个具有注脚的文本。2

    注释也是必不可少的

    Markdown将文本转换为 HTML

    KaTeX数学公式

    您可以使用渲染LaTeX数学表达式 KaTeX:

    Gamma公式展示 Γ(n)=(n1)!nN\Gamma(n) = (n-1)!\quad\forall n\in\mathbb N 是通过欧拉积分

    Γ(z)=0tz1etdt&ThinSpace;. \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.

    你可以找到更多关于的信息 LaTeX 数学表达式here.

    新的甘特图功能,丰富你的文章

    Mon 06Mon 13Mon 20已完成 进行中 计划一 计划二 现有任务Adding GANTT diagram functionality to mermaid
    • 关于 甘特图 语法,参考 这儿,

    UML 图表

    可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::

    张三李四王五你好!李四, 最近怎么样?你最近怎么样,王五?我很好,谢谢!我很好,谢谢!李四想了很长时间,文字太长了不适合放在一行.打量着王五...很好... 王五, 你怎么样?张三李四王五

    这将产生一个流程图。:

    链接
    长方形
    圆角长方形
    菱形
    • 关于 Mermaid 语法,参考 这儿,

    FLowchart流程图

    我们依旧会支持flowchart的流程图:

    Created with Raphaël 2.2.0开始我的操作确认?结束yesno
    • 关于 Flowchart流程图 语法,参考 这儿.

    导出与导入

    导出

    如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

    导入

    如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
    继续你的创作。


    1. mermaid语法说明 ↩︎

    2. 注脚的解释 ↩︎

    展开全文
  • 日常开发工具,直接使用SVG图片,不会失真;日常开发工具,直接使用SVG图片,不会失真;日常开发工具,直接使用SVG图片,不会失真;日常开发工具,直接使用SVG图片,不会失真。
  • 移动端svg不显示问题解决 情况如此: 之前app因为png体积太大的问题,将一下图片改成了svg。一直都可以使用。但当chrome更新了webview之后(73+版本),发现原本可以显示的svg就不显示了 svg使用方式:在css样式...

    移动端svg不显示问题解决

    情况如此:

    之前app因为png体积太大的问题,将一下图片改成了svg。一直都可以使用。但当chrome更新了webview之后(73+版本),发现原本可以显示的svg就不显示了

    svg使用方式:在css样式中直接引用svg数据

    background-image:url('data:image/svg+xml;utf8,<svg ...')

     

    解决办法:

    将svg数据单独保存在image文件下的bg.svg,然后在css样式中该用引用svg文件的方式:

    background-image:url('image/bg.svg')

     

    ps:这是我找到的一个解决办法,在网上好像还看到其他的。如有更好的办法,望共同交流进步。Best wishes!

    展开全文
  • IOS使用SVGKit库显示svg

    2020-07-29 14:20:28
    IOS使用SVGKit库显示svg图demo,并且实现svg图的缩放
  • github下载网址 ... TGDrawSvgPathView an IOS helper class to draw animated paths from SVG files Usage TGDrawSvgPathView *tgView = [[TGDrawSvgPathView all...

    github下载网址 https://github.com/Tibolte/TGDrawSvgPathView

     

    TGDrawSvgPathView

    an IOS helper class to draw animated paths from SVG files

    Usage

    TGDrawSvgPathView *tgView = [[TGDrawSvgPathView alloc] initWithFrame:CGRectMake(40.0, 70.0, 250.0, 250.0)];
    [tgView setPathFromSvg:@"cloud" strokeColor:[UIColor blackColor] duration:2.0];
    [self.view addSubview:tgView];
    
    
    

    Requirements

    ARC and iOS7

    Using CocoaPods

    TGDrawSvgPathView is available through CocoaPods, to install it simply add the following line to your Podfile:

    pod "TGDrawSvgPathView"
    
    
    

    Manual

    Download the project and add the folder Classes containing the classes TGDrawSvgPathView and PocketSVG to your project.

    Author

    Thibault Guégan, thibault.guegan@gmail.com Linkedin: https://www.linkedin.com/profile/view?id=93515047

     

     

    转载于:https://www.cnblogs.com/liyanyan/p/5102637.html

    展开全文
  • SVGiOS中使用总结

    2019-09-30 18:00:08
    SVG简介 SVG是一种用XML定义的语言,用来描述二维矢量及矢量/栅格图形。SVG提供了3种类型的图形对象:矢量图形(vectorgraphicshape例如:由直线和曲线组成的路径)、图象(image)、文本(text)。图形对象还可进行...

    SVG简介

    SVG是一种用XML定义的语言,用来描述二维矢量及矢量/栅格图形。SVG提供了3种类型的图形对象:矢量图形(vectorgraphicshape例如:由直线和曲线组成的路径)、图象(image)、文本(text)。图形对象还可进行分组、添加样式、变换、组合等操作,特征集包括嵌套变换(nestedtransformations)、剪切路径(clippingpaths)、alpha蒙板(alphamasks)、滤镜效果(filtereffects)、模板对象(templateobjects)和其它扩展(extensibility)。SVG图形是可交互的和动态的,可以在SVG文件中嵌入动画元素或通过脚本来定义动画。

    SVG优势

    1. SVG 可被非常多的工具读取和修改(比如记事本)
    2. SVG 与 JPEG 和 GIF 图像比起来,尺寸更小,且可压缩性更强。
    3. SVG 是可伸缩的
    4. SVG 图像可在任何的分辨率下被高质量地打印
    5. SVG 可在图像质量不下降的情况下被放大
    6. SVG 图像中的文本是可选的,同时也是可搜索的(很适合制作地图)
    7. SVG 可以与 JavaScript 技术一起运行
    8. SVG 是开放的标准
    9. SVG 文件是纯粹的 XML 

    SVG在iOS中的运用

    SVG在iOS中可以用UIWebView来加载:

        NSString *svgName = @"fruit_map.svg";
        NSString *svgPath = [[NSBundle mainBundle] pathForResource:svgName ofType:nil];
        NSData *svgData = [NSData dataWithContentsOfFile:svgPath];
        NSString *reasourcePath = [[NSBundle mainBundle] resourcePath];
        NSURL *baseUrl = [[NSURL alloc] initFileURLWithPath:reasourcePath isDirectory:true];
        UIWebView *webView = [[UIWebView alloc] init];
        webView.frame = CGRectMake(0, CGRectGetMaxY(htpBtn.frame)+50, self.view.bounds.size.width, 300);
        [webView loadData:svgData MIMEType:@"image/svg+xml" textEncodingName:@"UTF-8" baseURL:baseUrl];
        [self.view addSubview:webView];

    这种方法来加载SVG,虽然也可以,但是却存在诸如放大缩小、点击交互等问题。所以一般更加推荐使用SVGKit

    SVGKit使用

    1、SVG创建

        SVGKImage *svgImage = [SVGKImage imageNamed:svgName];
        SVGKFastImageView *svgView = [[SVGKFastImageView alloc] initWithSVGKImage:svgImage];
        svgView.frame = CGRectMake(0, CGRectGetMaxY(htpBtn.frame)+50, self.view.bounds.size.width, 300);
        [self.view addSubview:svgView];

    2、实现SVG放大缩小功能

    - (void)viewDidLoad {
        [super viewDidLoad];
        self.view.backgroundColor = [UIColor whiteColor];
        UIScrollView *scrollViewForSVG = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 200, self.view.bounds.size.width, self.view.bounds.size.height-200)];
        scrollViewForSVG.delegate = self;
        [self.view addSubview:scrollViewForSVG];
        _scrollViewForSVG = scrollViewForSVG;
        
        SVGKFastImageView *contentView = [[SVGKFastImageView alloc] initWithFrame:scrollViewForSVG.frame];
        [scrollViewForSVG addSubview:contentView];
        self.contentView = contentView;
        SampleFileInfo *info = [SampleFileInfo sampleFileInfoWithFilename:@"12.svg"];
        [self loadSVGFrom:info.source];
    }
    
    -(void)loadSVGFrom:(SVGKSource *) svgSource{
        [SVGKImage imageWithSource:svgSource
                      onCompletion:^(SVGKImage *loadedImage, SVGKParseResult* parseResult)
         {
             dispatch_async(dispatch_get_main_queue(), ^{
                 loadedImage.DOMDocument.title = @"123";
                 [self internalLoadedResource:svgSource parserOutput:parseResult createImageViewFromDocument:loadedImage];
             });
         }];
    }
    
    -(void) internalLoadedResource:(SVGKSource*) source parserOutput:(SVGKParseResult*) parseResult createImageViewFromDocument:(SVGKImage*) document
    {
        SVGKImageView* newContentView = nil;
        newContentView = [[SVGKFastImageView alloc] initWithSVGKImage:document];
        ((SVGKFastImageView*)newContentView).disableAutoRedrawAtHighestResolution = TRUE;
        [self didLoadNewResourceCreatingImageView:newContentView];
    }
    
    -(void)didLoadNewResourceCreatingImageView:(SVGKImageView*) newContentView{
        if (newContentView != nil) {
            self.contentView = newContentView;
            self.contentView.showBorder = YES;
            [self.scrollViewForSVG addSubview:self.contentView];
            
            [self.scrollViewForSVG setContentSize: self.contentView.frame.size];
            float screenToDocumentSizeRatio = self.scrollViewForSVG.frame.size.width / self.contentView.frame.size.width;
            self.scrollViewForSVG.minimumZoomScale = MIN( 2.5, screenToDocumentSizeRatio );
            self.scrollViewForSVG.maximumZoomScale = MAX( 2.5, screenToDocumentSizeRatio );
            [self.scrollViewForSVG setZoomScale:1.00 animated:YES];
        }
    }
    

    实现UIScrollView的代理方法:

    //代理方法,告诉ScrollView要缩放的是哪个视图
    - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
    {
        return self.contentView;
    }
    -(void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)finalScale
    {
         view.transform = CGAffineTransformIdentity; 
         view.bounds = CGRectApplyAffineTransform(view.bounds, CGAffineTransformMakeScale(finalScale, finalScale));
         [view setNeedsDisplay];
    
         self.scrollViewForSVG.minimumZoomScale /= finalScale;
         self.scrollViewForSVG.maximumZoomScale /= finalScale;
    }

    3、SVG上进行路线规划

    SVG上的线路规划,需要从服务器中拿取相关的坐标点,然后将其绘制在SVG上。具体实现如下:

    -(void) didLoadNewResourceCreatingImageView:(SVGKImageView*) newContentView
    {
        if( newContentView != nil )
        {
            self.contentView = newContentView;
            self.contentView.showBorder = YES;
            
            /** Move the gesture recognizer onto the new one */
            if( self.tapGestureRecognizer == nil )
            {
                self.tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGesture:)];
            }
            [self.contentView addGestureRecognizer:self.tapGestureRecognizer];
           [self.contentView addSubview:self.imageView];
            [self.scrollViewForSVG addSubview:self.contentView];
            
            [self.scrollViewForSVG setContentSize: self.contentView.frame.size];
            float screenToDocumentSizeRatio = self.scrollViewForSVG.frame.size.width / self.contentView.frame.size.width;
            self.scrollViewForSVG.minimumZoomScale = MIN( 2.5, screenToDocumentSizeRatio );
            self.scrollViewForSVG.maximumZoomScale = MAX( 2.5, screenToDocumentSizeRatio );
            [self.scrollViewForSVG setZoomScale:1.00 animated:YES];
        }
        
        UIBezierPath * path = [[UIBezierPath alloc]init];
        path.lineWidth = 1.0;
        [path moveToPoint:CGPointMake( 0, 527 )];
        [path addLineToPoint:CGPointMake( 90, 527 )];
        [path addLineToPoint:CGPointMake( 99.96, 541.85 )];
        [path addLineToPoint:CGPointMake( 153.13, 546.03 )];
        [path addLineToPoint:CGPointMake( 204.96, 560.85 )];
        [path addLineToPoint:CGPointMake( 250.96, 585.85 )];
        [path addLineToPoint:CGPointMake( 310.87, 636.47 )];
        [path addLineToPoint:CGPointMake( 336.96, 662.85 )];
        [path addLineToPoint:CGPointMake( 402.5, 641.5 )];
        [path addLineToPoint:CGPointMake( 485.5, 647.5 )];
        CAShapeLayer *lineChartLayer = [CAShapeLayer layer];
        lineChartLayer.path = path.CGPath;
        lineChartLayer.strokeColor = [UIColor redColor].CGColor;
        lineChartLayer.fillColor = [[UIColor clearColor] CGColor];
        // 默认设置路径宽度为0,使其在起始状态下不显示
        lineChartLayer.lineWidth = 1;
        [self.contentView.layer addSublayer:lineChartLayer];
    }
    

    效果如下:

     

     

    展开全文
  • IOS中操作svg

    2016-09-23 21:21:13
    1、首先明白什么是svg图:http://www.ibm.com/developerworks/cn/web/wa-scalable/  简单的说就是svg格式的图不会随着...2、在ios中源生的api没有提供相关的操作,但是可喜的是有第三方库提供了操作:SVGKit  
    1、首先明白什么是svg图:http://www.ibm.com/developerworks/cn/web/wa-scalable/

                 简单的说就是svg格式的图不会随着图片的缩放出现模糊、svg图实际是xml格式的,可以通过代码获取各种element

    2、在ios中源生的api没有提供相关的操作,但是可喜的是有第三方库提供了操作:SVGKit

                SVGKit的地址:https://github.com/SVGKit/SVGKit

                 代码中集成SVGKit参考:http://stackoverflow.com/questions/3520977/build-fat-static-library-device-simulator-using-xcode-and-sdk-4/3647187#3647187

    经过测试完全可以


    展开全文
  • 使用SVGKit库显示svg图: 1、使用SVGKit库显示svg图 2、实现svg图的缩放操作 3、点击svg图的某个部分,获取svg图的某个部分 Demo下载: http://download.csdn.net/detail/guobing19871024/9684889
  • iOS 显示SVG文件的方法

    2018-12-28 19:27:29
    iOS 显示SVG文件的方法 1. Swift iOS : 显示SVG文件的方法 SVG文件是矢量图标准之一,特点是可以缩放,并且可以用可以阅读的源代码的方式(而不是二进制)来存储图形信息。比如如下文件就是一个svg文件:&lt;svgxmlns...
  • iOS 加载SVG文件

    2020-07-30 23:33:22
    iOS 加载SVG文件,svg地图,点击获取地图上点击的位置
  • svg图片在ios上的使用

    2014-12-23 15:22:05
    1:从UI设计师那里得到的是每个svg图通过网站icomoon.io这个网站生成ttf格式的图片 步骤:a.点击IcoMoon APP按钮 b.点击Import Icons(这里就是UI设计的svg图片) c.选中需要生成的图片,点击右下角的Generate ...
  • 具体使用方法:https://blog.csdn.net/qq_33608748/article/details/82495758
  • ios通过svg截取头像

    2015-08-21 17:29:48
    UIImageView* testImg=[[UIImageView alloc]initWithFrame:CGRectMake(10, 10, 50, 50)];  testImg.image=[UIImage imageNamed:@"登录背景"];  PocketSVG *myVectorDrawing = [[PocketSVG alloc] initFromSV
  • 页面设计ui icon 直接使用,svg文件
  • 之前遇到的需求使用SVG矢量图,那么问题来了拿到SVG数据以后怎么去绘制。 最后找到了SVGKIT 这个第三方库。下载地址 https://github.com/SVGKit/SVGKit首先导入就不用说了吧 可以用pod倒入初始化SVGKIT我使用的是...
  • 更改svg图颜色

    2020-06-21 23:00:34
    阿里图标下载svg后,删除里面的fill属性后,就可以使用css 中fill 来填充自己想要的颜色了。
  • 本文出自: http://blog.csdn.net/wyk304443164 使用的是 filter drop-shadow 如果你只想兼容 Chrome 那么请看: ...如果你想兼容ios Android 小程序,那么.tian-word {
  • 对于iOS本地应用程序来说最简单的答案就是始终使用PNG,除非你有非常非常好的理由不用它。当iOS应用构建的时候,Xcode会通过一种方式优化.png文件而不会优化其它文件格式。它优化得相当的好 他们之间有以下区别: 1....
  • iOS使用矢量图的总结

    2015-02-02 12:44:43
    iOS使用矢量图的总结 十一月 10th, 2014  原理 苹果最擅长使用障眼法,之前是障用户的眼,现在又来障开发者。XCode6的这个“支持矢量图”,实际上只是编译项目时,根据矢量图自动生成对应的@1x,@2x和@3x...
  • svg 贝塞尔曲线详解

    2019-03-02 10:19:22
    svg 贝塞尔曲线详解 让我们抛出链接功底 http://www.zhangxinxu.com/wordpress/2014/06/deep-understand-svg-path-bezier-curves-command/
1 2 3 4 5 ... 20
收藏数 11,481
精华内容 4,592
关键字:

ios svg