@
jox @
jox 15楼我没有附上nsstring *html的内容,但放在本帖里讨论必然是包含<img>标签的,所以创建NSAttributedString后是必然包含NSTextAttachment的。
[NSAttributedString enumerateAttribute:NSAttachmentAttributeName] 这方法的作用是循环NSAttributedString里的NSTextAttachment对象,也就是说那个block里的value就是NSTextAttachment对象
还有可以指定循环其它对象,例如
NSLinkAttributeName(NSAttributedString里的<a>标签)
详情请看NSAttributedString.h的定义
15楼的测试我可能没有描述清楚,本意是测试NSAttributedString+UIView这种显示富文本组合,是在何时加载NSAttributedString里面包含的网络图片(即<img src="
http://a.com/a.jpg">)
这个测试有两种结果:
1、如果是UITextView负责加载图片,那我就可以通过[NSAttributedString enumerateAttribute:NSAttachmentAttributeName]这个方法替换掉网络图片,改为显示APP自带的图片资源作为占位符。
2、创建NSAttributedString后就加载图片,那第一个结果的替换NSTextAttachment为占位符就 行不通了
15楼的测试我自己得出的是第二个结果,依据是在15楼的代码执行顺序下,在UITextView里显示的尺寸不是noavatar这个图片的尺寸,而是被替换掉的图片尺寸,这代表NSAttributedString已经 [同步] 读取过图片了,已经获得了这些图片的尺寸后,才去执行[NSAttributedString enumerateAttribute:NSAttachmentAttributeName]这一步。所以被替换成的noavatar已经被拉扯变形了。
=============
至于另外一贴咨询有没有缩略图服务,难道要手机APP读取原图后再缩放?太耗流量太耗能,有什么好无语的?!
而且图片并不在我服务器上,而是第三方网站的图片,所以有生成第三方缩略图这个需求不是很正常吗?我只是不写产生这个需求的原因而直接到v2ex问问有没有网站提供这种服务而已,这又有什么好无语的呢。
我很清楚在干啥啊,就是想给手机省流量和节能而已,而且又可以提高APP的响应速度。