Saya memiliki aplikasi iOS yang sangat sederhana dengan tampilan uiwebview yang memuat halaman pengujian yang sangat sederhana (test.html):
<html>
<body>
<img src="img/myimage.png" />
</body>
</html>
Saya memuat file test.html ini ke tampilan web saya:
NSURL *url = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"html"];
NSString *html = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
NSURL *baseUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
[webView loadHTMLString:html baseURL:baseUrl];
Ini berfungsi dengan baik jika saya mereferensikan gambar tanpa jalur relatif dan meletakkan gambar yang direferensikan di jalur root di bawah Target -> Salin Sumber Daya Bundel dalam XCode, namun saya tidak bisa membuatnya bekerja dengan jalur relatif seperti yang ditunjukkan di file html saya . Pasti ada cara untuk melakukan ini, saya punya banyak gambar, css, file javascript yang ingin saya muat ke webview dan saya tidak ingin semuanya ada di root dan harus mengubah semua referensi di web saya aplikasi.
@"www/app"
untuk direktori arg?Di Swift:
sumber
requestURL
.Saya menjejalkan semuanya menjadi satu baris (buruk saya tahu) dan tidak punya masalah dengan itu:
sumber
Saya hanya melakukan ini:
Di mana "index.html" secara relatif merujuk pada gambar, CSS, javascript, dll.
sumber
Jawaban cepat 2.
The UIWebView Kelas Referensi menyarankan untuk tidak menggunakan webView.loadRequest (permintaan):
Dalam solusi ini, html dibaca menjadi string. Url html digunakan untuk menentukan jalur, dan meneruskannya sebagai url dasar.
sumber
Saya telah kembali dan menguji dan menguji ulang ini, tampaknya satu-satunya cara saya bisa membuatnya berfungsi (karena saya memiliki beberapa file di folder img dan beberapa di js / css, dll ...) adalah tidak gunakan jalur relatif ke gambar saya di html dan semuanya direferensikan ke folder bundel. Sayang sekali :(.
sumber
Jawaban @ sdbrain di Swift 3:
sumber
Di Swift 3.01 menggunakan WKWebView:
Ini menyesuaikan beberapa perubahan sintaks yang lebih baik di 3.01 dan menjaga struktur direktori tetap di tempatnya sehingga Anda dapat menyematkan file HTML terkait.
sumber
let localURL = URL.init(fileURLWithPath: Bundle.main.path(forResource: "index", ofType: "html", inDirectory: "mapa_procesos")!) webView.loadRequest(URLRequest(url: localURL))