使⽤svg图⽚
使⽤svg图⽚
SVG⽂件简介
SVG⽂件是⽮量图标准之⼀,特点是可以缩放,并且可以⽤可以阅读的源代码的⽅式(⽽不是⼆进制)来存储图形信息。⽐如如下⽂件就是⼀个svg⽂件:
<svg xmlns="/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图标
⼀,使⽤第三⽅框架
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 {
svg图形
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
3. ⼀次添加全局的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 =>'github/SVGKit/SVGKit.git', :branch =>'2.x'
#因为SVGKit本⾝集成了⼀个另外的⼀个第三⽅,所以也要集成⼀下.
pod 'CocoaLumberjack'
(2)命令⾏下cd到 Podfile对应的⽬录,运⾏
pod install
3. 直接使⽤framework.(此⽅法会分离模拟器架构, 不⽀持模拟器运⾏.想了解分离模拟器架构的可以看下.)
(1). 从github上下载之后,打开⽂件夹的SVGKit-iOS.然后xcode选项,Product->Scheme->Edit Scheme
(2).如上图根据情况选择.然后command+b进⾏编译.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。