J'ai une application iOS très simple avec une uiwebview chargeant une page de test très simple (test.html):
<html>
<body>
<img src="img/myimage.png" />
</body>
</html>
Je charge ce fichier test.html dans ma vue Web:
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];
Cela fonctionne bien si je référence l'image sans le chemin relatif et que je mets l'image référencée dans le chemin racine sous Cibles -> Copier les ressources du bundle dans XCode, mais je ne peux pas le faire fonctionner avec le chemin relatif comme indiqué dans mon fichier html . Il doit y avoir un moyen de le faire, j'ai beaucoup d'images, de fichiers css, javascript que je veux charger dans la vue Web et je voudrais ne pas avoir tout à la racine et devoir changer toutes les références dans mon site Web app.
@"www/app"
pour le répertoire arg?Dans Swift:
la source
requestURL
.J'ai tout entassé dans une seule ligne (mauvais je sais) et je n'ai eu aucun problème avec cela:
la source
Je fais simplement ceci:
Où "index.html" fait référence relativement aux images, CSS, javascript, etc.
la source
Réponse rapide 2.
La référence de classe UIWebView déconseille d'utiliser webView.loadRequest (request):
Dans cette solution, le code HTML est lu dans une chaîne. L'URL du html est utilisée pour déterminer le chemin et le transmet comme URL de base.
la source
Je suis retourné et testé et re-testé cela, il semble que la seule façon de le faire fonctionner (puisque j'ai des fichiers dans le dossier img et d'autres dans js / css, etc ...) n'est pas de utilisez un chemin relatif vers mon image dans le html et faites référencer tout dans le dossier du bundle. C'est dommage :(.
la source
Réponse de @ sdbrain dans Swift 3:
la source
Dans Swift 3.01 en utilisant WKWebView:
Cela ajuste certaines des modifications de syntaxe les plus fines de la version 3.01 et maintient la structure des répertoires en place afin que vous puissiez incorporer les fichiers HTML associés.
la source
let localURL = URL.init(fileURLWithPath: Bundle.main.path(forResource: "index", ofType: "html", inDirectory: "mapa_procesos")!) webView.loadRequest(URLRequest(url: localURL))