浏览了一下之后,我仍然无法弄清楚这一点。我已经在Xcode的项目资源组中添加了一个HTML页面及其images目录(将它们复制过来)。
当我尝试使用以下代码加载WebView时,文本显示正常,但未加载图像。
NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"index.html"];
NSString *htmlContent = [NSString stringWithContentsOfFile:path];
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
[[tempWebView mainFrame] loadHTMLString:htmlContent baseURL:url];
编辑:对于延迟感到抱歉,这里有一些失败的基本HTML。
<html>
<body>
<img src="images/bg.png"></img>
</body>
</html>
我编辑的代码看起来像这样 -
NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
NSURL *url = [NSURL fileURLWithPath:path];
[[webView1 mainFrame] loadRequest:[NSURLRequest requestWithURL:url]];
EDIT2:刚刚意识到这是路径的问题。显然<img src = "images/bg.png">
不起作用,但如果我将bg.png复制到根目录并说<img src = "bg.png">
一切正常。我仍然不确定我在哪里出错。
答案 0 :(得分:8)
考虑执行以下操作:
这会将您的代码减少到两行,如果HTML代码正确,则可以使用。
答案 1 :(得分:4)
我认为这里的问题是在构建阶段如何将文件复制到资源目录。在Xcode中显示为组的任何文件夹在复制时都将被展平。如果要将整个网站文件夹结构添加到项目中,则必须在添加结构时选择“为任何添加的文件夹创建文件夹引用”。
一个例子: 我有一个html文件,它引用同名文件夹中的图像。我将所有这些添加到我的项目中选择'文件夹引用':
我的项目中的文件将如下所示(请注意蓝色文件夹):
构建项目时,将保留Web内容文件夹:
无需开始设置基本URL或使用字符串加载。 现在可以像这样成功加载网页:
NSURL *url = [[NSBundle mainBundle] URLForResource:@"LocalTestWeb" withExtension:@"html"];
[[self.webView mainFrame] loadRequest:[NSURLRequest requestWithURL:url]];
答案 2 :(得分:3)
此代码适用于我(仅与Canvas有问题):
NSString* filePath = [[NSBundle mainBundle] pathForResource:@"index"
ofType:@"html"
inDirectory:@"html_files_folder"];
NSURL* fileURL = [NSURL fileURLWithPath:filePath];
NSURLRequest* request = [NSURLRequest requestWithURL:fileURL];
[[webView mainFrame] loadRequest:request];
答案 3 :(得分:1)
您需要获取base64字符串中的图像文件数据。并将该字符串放在img标签中,如下所示。
<img src="data:image/png;base64,iVBORw0KGgoAAAANS..." />