NSString *html = @"<img src=\"
http://cdn.v2ex.com/site/logo@2x.png\"/>";
NSDictionary *options = @{NSDocumentTypeDocumentAttribute : NSHTMLTextDocumentType};
NSAttributedString *string = [[NSAttributedString alloc] initWithData:[html dataUsingEncoding:NSUnicodeStringEncoding] options:options documentAttributes:nil error:&error];
//textView是UITextView
[text setAttributedText:string];
想在上面这一个过程中,实现:
把html中的img替换成小的缩略图显示,并使用TMCache缓存缩略图,在UITextView中点击缩略图后,显示原图。
搜索了两三天,依然找不到图片的下载是在NSAttributedString/UITextView这两个玩意的哪个方法里,倒是实现了点击后识别是否图片。
q84629462
2014-11-26 22:51:21 +08:00
其实我也是刚刚接触iOS,所以自定义排版对我来说比较难。。。
缩略图其实也是网络图片,是专门用来给移动设备图文混排里展示的,用户不一定会点击看大图,所以把html夹带的图片转为缩略图显示就比较重要了。
我其实想先用正则把HTML里的img src替换为缩略图src
但这个想法恐怕行不通,我刚刚测试了一下,
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithData:[html dataUsingEncoding:NSUnicodeStringEncoding] options:options documentAttributes:nil error:&error];
执行这句之后,html字符串中的图片就已经开始下载了。
我是这么测试出来的:
上门那句代码之后紧跟:
[string enumerateAttribute:NSAttachmentAttributeName inRange:NSMakeRange(0, string.length) options:0 usingBlock:^(id value, NSRange range, BOOL *stop) {
if (value) {
NSTextAttachment *ment = value;
ment.image = [UIImage imageNamed:@"noavatar"];
}
}];
然后再[uitextview setAttributedText:string];
此时显示的noavatar这个图片已经不是noavatar原先的尺寸了,也就是说iOS已经在后台读取到了图片,获得了图片真实尺寸,而且还是同步读取图片。
恐怕还真要自己解析html了。。。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/149498
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.