2014-12-07 27 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