1
このメソッドを使用しようとしています。UIWebViewのレイヤーをイメージとして保存するように構成しました。それは動作していますが、私はUIViewにロードされているSVGは、UIWebViewの背景のみ、画像でレンダリングされていません。SVGファイルを含むUIWebViewのレイヤーをレンダリングする
+ (BOOL)imageFromSVGinWebView:(UIView *)theView usePNG:(BOOL)usePNG; {
UIGraphicsBeginImageContext(theView.frame.size);
[theView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *layerImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData *layerIMGData = nil;
NSString *pathComponent = nil;
if (usePNG) {
layerIMGData = UIImagePNGRepresentation(layerImage);
pathComponent = @"png";
}else {
layerIMGData = UIImageJPEGRepresentation(layerImage,1.0f);
pathComponent = @"jpg";
}
NSString *appFile = [[CCFileManagement conversionsDirectory] stringByAppendingPathComponent:String(@"img.%@",pathComponent)];
NSError *error = nil;
BOOL returnBOOL = [layerIMGData writeToFile:appFile options:NSDataWritingAtomic error:&error];
if(error != nil)
ILogPlus(@"%@",error);
return returnBOOL;
}
を要約すると、私はのUIWebViewにSVGをロードした、のUIWebViewは画像として、画像を開いて、画像がそれでSVGを持っていないことを保存します。私は他のビューでこれを成功させました.SVGまたはUIWebViewについては何かが異なります。
更新: 画像保存コードを実行するのにアプリが数秒間待つようにするために遅延を追加すると、機能します。そのコードをwebViewDidFinishLoadに入れても機能しません。明らかに、webViewDidFinishLoadはSVGを数えません。