2015-04-01 98 views
0

我有HTML代码。我想从它预先加载图像并保存在本地文件中。我将HTML转换为NSAttributedString并在UITextView中显示该字符串。如何从HTML加载图像img src从本地文件加载它

NSAttributedString *htmlAttributedText = 
     [[NSAttributedString alloc] initWithData:[htmlText dataUsingEncoding:NSUTF16StringEncoding] 
             options:@{ NSDocumentTypeDocumentAttribute : NSHTMLTextDocumentType } 
           documentAttributes:nil 
              error:&err]; 

textView.attributedText = htmlAttributedText; 

如何从本地文件加载图像而不是从网络加载?

回答

0

如果我理解你的权利,因为对我来说最简单和最快的方式使用SDWebImage

你曾经下载你的图像后,LIB保存,下次当您尝试下载来自同一个URL的lib图像会给你缓存图像。

+0

我认为问题在于:当我尝试从html获取NSAttributedString时,图像将以某种本地方式加载,而我不知道如何强制解析器从磁盘缓存中获取图像 – rostislawk 2015-04-01 13:07:51

0

下面的代码将列出HTML中的图像数组。获取所有图像的列表

NSMutableArray * arrayToStoreImages = [[NSMutableArray alloc] init]; 
NSRegularExpression* imageRegex = [[NSRegularExpression alloc] initWithPattern:@"<img[^>]*>" options:0 error:NULL] ; 
[imageRegex enumerateMatchesInString:HTMLBODY options:0 range:NSMakeRange(0, [HTMLBODY length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){ 

[arrayToStoreImages 
addObject:NSStringFromRange(match.range)];   
}]; 

使用SDWebImage下载所有图像并使用获取的URL中的HASH将其存储到本地存储中。 将实际URL替换为本地Hashed路径。 将HTML转换为NSAttributedString,并从本地存储中删除图像,因为它是临时的。

如果图像被SDWebImage缓存,它将从缓存中传递,否则它将下载新的图像。