iOS SVG及相干利用

手机游戏开发者 2024-9-8 11:16:21 141 0 来自 中国
克日,发现安卓同砚在项目中利用的都是SVG(矢量图)的图片。
那么,什么是svg呢?svg在放大大概缩小的环境下,图像的图形质量不会有所丧失,而且要比png,jpeg小很多。
但是有个标题是安卓那里是可以直接利用svg图片的,iOS这边则须要先导入svg库,才华利用。
pod "SVGKit"
终端报错,提示Could not resolve proxy: “”
报错缘故起因是协议
终端输入:vim ~/.gitconfig,打开设置文件,删除全部协议
重新pod install,导入乐成,但编译项目,报错Module 'CocoaLumberjack' not found
由于SVGkit须要依赖CocoaLumberjack第三方,但在cocopods导入时,已经默认一起导入。


寻求其他办理方法:
pod 'SVGKit', :git => 'https://github.com/SVGKit/SVGKit.git', :branch => '2.x'
pod 'CocoaLumberjack'
以这种情势导入编译就不报错了。
引入头文件
#import "SVGKit.h"
#import "SVGKImage.h"
#import "SVGKParser.h"
#import "UIImage+SVG.h"(这个是本身封装的svg分类)
接下来就是展示svg分类文件代码的时候
.h文件
/** show svg image
 @param name svg name
 @return svg image
 */
+ (UIImage*)br_svgImageNamedNSString*)name;
/**
 show svg image
 @param name svg name
 @param size image size
 @return svg image
 */
+ (UIImage*)br_svgImageNamedNSString*)namesizeCGSize)size;
/**
 show svg image
 @param name      svg name
 @param size      image size
 @param tintColor  image color
 @return svg image
 */
+ (UIImage*)br_svgImageNamedNSString*)namesizeCGSize)sizetintColorUIColor*)tintColor;
.m文件
/**
 show svg image


 @param name svg name
 @return svg image
 */
+ (UIImage*)br_svgImageNamedNSString*)name {


    SVGKImage*svgImage = [SVGKImageimageNamed:name];
    returnsvgImage.UIImage;
}
/**
 show svg image


 @param name svg name
 @param size image size
 @return svg image
 */
+ (UIImage*)br_svgImageNamedNSString*)namesizeCGSize)size {
    SVGKImage*svgImage = [SVGKImageimageNamed:name];
    svgImage.size= size;
    returnsvgImage.UIImage;
}
/**
 show svg image


 @param name      svg name
 @param size      image size
 @param tintColor  image color
 @return svg image
 */
+ (UIImage*)br_svgImageNamedNSString*)namesize:(CGSize)sizetintColor:(UIColor*)tintColor {
    SVGKImage*svgImage = [SVGKImageimageNamed:name];
    svgImage.size= size;
    CGRectrect =CGRectMake(0,0, svgImage.size.width, svgImage.size.height);
    CGImageAlphaInfoalphaInfo =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();
    returnimageOut;
}
调用
 UIImage*image = [UIImage br_svgImageNamed"图片"];
UIImage*image2=[UIImage br_svgImageNamed"icon_back.svg"size:CGSizeMake(12.0,24.0)];
UIImage*image3=[UIImage br_svgImageNamed"icon_back.svg"size:CGSizeMake(12.0,24.0)tintColor:[UIColor whiteColor]];
(不须要.svg后缀)
大概
//        SVGKImage *svgImage = [SVGKImage imageNamed"playedBtnImg-1.svg"];
//        self.playedBtnImg = [[SVGKLayeredImageView alloc] initWithSVGKImage:svgImage];
//        [self.playedView addSubview:self.playedBtnImg];


有个标题须要留意的是,假如用iOS原生uiimage赋值图片,假如图片被删,那么顶多是这个图片展示不出来,但假如换用svg格式,找不到图片会crash
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-21 21:24, Processed in 0.130407 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表