2014-12-07 23 views
2

我尝试制作iOS应用程序并使用带有SDWebImage的Github API。以下是获取“用户个人资料图片”的代码。针对iOS的SVG字符串UIImage

[manager GET:@"https://api.github.com/users/(here is your account name)/following?page=1&per_page=100" 
    parameters:nil 
    success:^(AFHTTPRequestOperation *operation, id responseObject) { 

     NSArray *array = [NSJSONSerialization JSONObjectWithData:responseObject 
                  options:NSJSONReadingAllowFragments 
                  error:nil]; 
     for (NSDictionary *dic in array) { 
      [profileImageArray addObject:[dic valueForKey:@"avatar_url"]]; 
     } 

    }failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog(@"Error: %@", error); 
    }]; 

这个效果很好。

但是,当我尝试获取贡献热图图像时,无法获取贡献热图的图像,因为贡献热图是“SVG字符串”。

贡献热图是在这里。

https://qiita-image-store.s3.amazonaws.com/0/19462/43207385-f3e4-1c96-b288-78802beee357.png

然后,研究之后,我尝试 “SVGKit”, “PocketSVG”, “SKUBezierPath + SVG”,等等。但是这样的库对SVG“字符串”和SVG“文件”不起作用。

我可以用这个URL

https://github.com/users/(here is username)/contributions 

获得贡献热图SVG这里是一个结果。

http://i.imgur.com/pqy1FmO.png

我不能把这个响应,UIImage的。我也尝试将responseData更改为NSData并转换UIImage,但它也不能正常工作。

你可以教我如何把“github贡献热图SVG”作为UIImage吗?

回答

3

SVGgh包含一个SVGRenderer类,它具有一个init方法-initWithString:(NSString *)anSVG-您可以使用创建该方法的呈现器来告诉SVGDocumentView呈现您的SVG。我写了SVGG。

SVGRenderer类现在有一个-(UIImage*)asImageWithSize:(CGSize)maximumSize andScale:(CGFloat)scale方法,它将直接创建一个UIImage。

就你而言,它看起来并没有得到一个完整的SVG文档,因为它缺少了它的XML声明。所以,你应该拿块并将其添加到一个基本的XML前缀,如在斯威夫特:我使用了\字符

let xmlPrefix = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> 
<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" 
\"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">" 

let documentString = xmlPrefix + serverImage 

let renderer = SVGRenderer(string: documentString) 
let image = renderer.asImageWithSize(CGSize(100, 100)), andScale:2.0) 

通知逃避所有报价哈希标记。我还没有编译这个代码片段,所以Swift可能会有点偏离。

+0

嗨,什么是需要的字符串的格式,我想用你的库。一个例子会很棒。谢谢 – shannoga 2016-03-15 05:41:30

+0

格式是一个SVG文档。因此,您想从服务器获取字符串,并将块中的部分取出,并为其指定XML标头。我会稍微编辑我的回复。 – 2016-03-15 13:18:33

+0

这就是我所做的,但我得到一个黑色的矩形而不是图像(在浏览器上测试很好)。我有办法在笔记中显示我的代码吗?谢谢 – shannoga 2016-03-15 13:20:29