Mam bardzo prostą aplikację na iOS z uiwebview ładującą bardzo prostą stronę testową (test.html):
<html>
<body>
<img src="img/myimage.png" />
</body>
</html>
Ładuję ten plik test.html do mojego widoku internetowego:
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];
Działa to dobrze, jeśli odwołuję się do obrazu bez ścieżki względnej i umieszczę obraz, do którego się odwołujemy, w ścieżce głównej w obszarze Cele -> Kopiuj zasoby pakietu w XCode, jednak nie mogę go uruchomić ze ścieżką względną, jak pokazano w moim pliku html . Musi istnieć sposób, aby to zrobić, mam wiele obrazów, plików css, javascript, które chcę załadować do webview i nie chciałbym mieć wszystkiego w katalogu głównym i zmieniać wszystkie odniesienia w mojej sieci aplikacja.
@"www/app"
dla katalogu arg?W Swift:
źródło
requestURL
.Wepchnąłem wszystko w jedną linię (źle wiem) i nie miałem z tym żadnych problemów:
źródło
Po prostu robię to:
Gdzie „index.html” zawiera odniesienia do obrazów, CSS, javascript itp.
źródło
Szybka odpowiedź 2.
Dokumentacja klasy UIWebView odradza używanie webView.loadRequest (żądanie):
W tym rozwiązaniu html jest wczytywany do ciągu. Adres URL html jest używany do określenia ścieżki i przekazuje ją jako podstawowy adres URL.
źródło
Wróciłem, przetestowałem i ponownie przetestowałem to, wydaje się, że jedynym sposobem, w jaki mogę to uruchomić (ponieważ mam kilka plików w folderze img, a niektóre w js / css, itp ...) nie jest użyj względnej ścieżki do mojego obrazu w html i miej wszystko, co odnosi się do folderu pakietu. Jaka szkoda :(.
źródło
Odpowiedź @ sdbrain w Swift 3:
źródło
W Swift 3.01 przy użyciu WKWebView:
Dostosowuje się to do niektórych drobniejszych zmian składni w wersji 3.01 i utrzymuje strukturę katalogów na miejscu, dzięki czemu można osadzać powiązane pliki HTML.
źródło
let localURL = URL.init(fileURLWithPath: Bundle.main.path(forResource: "index", ofType: "html", inDirectory: "mapa_procesos")!) webView.loadRequest(URLRequest(url: localURL))