加载本地HTML页面

浏览了一下之后,我仍然无法弄清楚。 我在Xcode的项目资源组中添加了一个HTML页面及其图像目录(复制了它们)。

当我尝试使用以下代码加载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]];

编辑2:刚刚意识到这是一个问题的路径。 显然<img src = "images/bg.png">不起作用,但是如果我将bg.png复制到根目录并说<img src = "bg.png">一切正常。 我仍然不确定我在哪里出错。


考虑执行以下操作:

  • 不要获取资源路径并自行将子路径装订到它上面,而是要求捆绑包为您提供正确的路径。
  • 根本不要处理路径,请让软件包为您提供正确的URL。 (需要Mac OS X 10.6或更高版本。)
  • 不要将HTML内容直接注入框架,而是要求WebView加载URL。
  • 这会将您的代码减少为两行,如果HTML代码正确,则可以工作。


    我认为这里的问题是如何在构建阶段将文件复制到资源目录。 任何在Xcode中显示为组的文件夹在复制时都会变平。 如果要将整个网站文件夹结构添加到项目中,则在添加结构时必须选择“为所有添加的文件夹创建文件夹参考”。

    一个例子:我有一个HTML文件引用同名文件夹中的图像。 我将所有这些添加到我的项目中,选择'文件夹引用':

    添加文件

    这些文件在我的项目中看起来像这样(注意蓝色文件夹):

    项目树

    项目建成后,将维护Web内容文件夹:

    资源文件夹中的资源

    无需开始设置基本URL或使用字符串进行加载。 网页现在可以像这样成功加载:

    NSURL *url = [[NSBundle mainBundle] URLForResource:@"LocalTestWeb" withExtension:@"html"];
    [[self.webView mainFrame] loadRequest:[NSURLRequest requestWithURL:url]];
    

    此代码适用于我(仅与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];
    
    链接地址: http://www.djcxy.com/p/34811.html

    上一篇: Loading a local HTML page

    下一篇: NSURLProtocol subclass changes URLs automatically