独自のhtmlファイルをUIWebViewにロードするにはどうすればよいですか?
次のコードは、プロジェクトフォルダーにindex.html
という名前のHTMLファイルを読み込みます。
[WebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]isDirectory:NO]]];
コーディグレイは正しいですが、この方法もあります:
// Load the html as a string from the file system
NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
NSString *html = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
// Tell the web view to load it
[WebView loadHTMLString:html baseURL:[[NSBundle mainBundle] bundleURL]];
これは、ロードする前にhtmlを編集する必要がある場合に役立ちます。
スウィフト
guard let path = NSBundle.mainBundle().pathForResource("index", ofType: "html") else {
return
}
let url = NSURL(fileURLWithPath: path)
self.webview.loadRequest(NSURLRequest(URL:url))
次のコードを使用すると、WebViewにHTMLを読み込むことができます。
Web.delegate = self;
[Web loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]isDirectory:NO]]];
AppleのドキュメントではloadHTMLString:baseURL:
:
LoadHTMLString:baseURL:メソッドを使用してローカルHTMLファイルのロードを開始するか、loadRequest:メソッドを使用してWebコンテンツのロードを開始します。 stopLoadingメソッドを使用して読み込みを停止し、loadingプロパティを使用して、Webビューが読み込み中かどうかを確認します。
loadHTMLString:baseURL:
ドキュメントには、さらに推論があります。
セキュリティ攻撃に対する脆弱性を回避するために、このメソッドを使用してローカルHTMLファイルをロードしてください。 loadRequest:は使用しないでください。
これは役立つかもしれません: https://stackoverflow.com/a/29741277
NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"privacy-Policy" ofType:@"html" inDirectory:nil];
NSData *htmlData = [NSData dataWithContentsOfFile:htmlFile];
[webView loadData:htmlData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:@""]];
Swiftバージョン2.1
// load html to String with Encoding
let path = NSBundle.mainBundle().pathForResource("policy", ofType: "html")
do {
let fileHtml = try NSString(contentsOfFile: path!, encoding: NSUTF8StringEncoding)
webView.loadHTMLString(fileHtml as String, baseURL: nil)
}
catch {
}