ios 文档查看
项目中有文档查看的需求,txt、office文档、pdf(pdf另方法实现)等
实现类似离线查看的功能,文件从服务器下载至本地沙盒,路径self.localfilePath
1、用UIDocumentInteractionController实现,用法参考Library:
http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIDocumentInteractionController_class/Reference/Reference.html
设置委托,运行可看到效果,由于要进行一些自定义的操作及界面分格,所以尝试用webView
2、用webView实现:转码+组装HTMLString
code:
基本能够浏览文件,但是问题又来了:
1、文档浏览时会出现乱码
2、稍大的文档加载很慢或者干脆无法显示
分析问题:
1、显示乱码肯定是解码格式不正确,有关ios的一些encoding类型可参考另一篇文章
解码过程中有两类得到字符串:
第一种直接解码就可以得到正确的NSstring,类似这样
// GBK解码
NSStringEncoding enc = 0x80000632;
textContent = [NSString stringWithContentsOfFile:self.localfilePath usedEncoding:&enc error:nil];
第二种无法直接得到正确的NSstring ,通过二次转码得到,比如这样
// ISO 8859-1 + GBK解码
NSStringEncoding enc = 0x80000632;
NSStringEncoding isoEncoding= CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingISOLatin1);
NSString *str = [NSString stringWithContentsOfFile:self.localfilePath encoding:isoEncoding error:nil];
NSData *name = [str dataUsingEncoding:isoEncoding];
textContent = [[NSString alloc]initWithData:name encoding:enc];
处理后得到了正确的显示内容
2、加载问题
问题处在转码的过程相当长,而且耗时
后来考虑webView会出现加载不成功直接返回的问题,对TXT类型的文档用textView+loading等待框框来完成。
加载时间还是需要优化。