在UIWebView
中查看大型(至少1gb )文档,音频和视频文件时出现问题。
我想问一下这些大文件有什么办法可以查看,因为普通的苹果设备只有1GB RAM,因此不应该能够查看大于此的文件(更不用说操作系统的内存消耗了)本身和其他背景任务)。
我可以在iPhone电影播放器中观看大型(~2gb)电影,但在使用webview时不能在我的应用中观看,所以我认为应该有办法做到这一点,但无法找到网页寻求建议。
有了它应该是可能的,所以有任何方法可以做到这一点,因为webview似乎无法 处理大文件 ,因为它肯定会 < em>内存不足 。
我需要能够将文件作为NSData
传递,因为设备中的文件已加密,并且必须始终保持这种状态。
这是我显示音频/视频文件的方式:
NSString *contentType = [MIMETypeToFileExtViceVersaConverter convertFileExtensionToMimeType:shareWithObject.fileExtension];
NSString *base64String = [fileData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
NSString *str = [NSString stringWithFormat:@" \
<html><head></head><body style=\"margin:0;width:100%%;height:100%%;\">\
<video controls height=\"100%%\" width=\"100%%\"> \
<source type=\"%@\" src=\"data:%@;base64,%@\"> \
</video></body></html>", contentType, contentType, base64String];
[self.webView loadHTMLString:str baseURL:[[NSBundle mainBundle] resourceURL]];
这是针对文档文件的:
NSString *contentType = [MIMETypeToFileExtViceVersaConverter convertFileExtensionToMimeType:shareWithObject.fileExtension];
[self.webView loadData:fileData MIMEType:contentType textEncodingName:@"UTF-8" baseURL:[[NSBundle mainBundle] resourceURL]];
答案 0 :(得分:0)
使用UIWebView的childMap.forEach((k,v) -> mainMap.computeIfPresent(k, (d,m) -> {
m.keySet().removeAll(v);
return m.isEmpty()? null: m;
}));
功能时,这是不可能的。我们必须限制可以查看的文档大小,以防止与内存不足相关的崩溃。
希望将来有一个解决方案可以解决这个问题,我会将这个答案的答案奖励给这个问题的有效答案