Charger les ressources de chemin d'accès relatif à l'aide de html en local dans uiwebview
J'ai une question très simple de l'application pour iOS avec une uiwebview chargement d'un très simple page de test (test.html):
<html>
<body>
<img src="img/myimage.png" />
</body>
</html>
Je charge ce test.html fichier 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 j'ai de la référence de l'image sans le chemin d'accès relatif et de mettre l'image référencés dans le chemin de la racine dans le cadre des Objectifs -> Copie Bundle de Ressources dans XCode, cependant je ne peux pas le faire fonctionner avec le chemin d'accès relatif, comme indiqué dans mon fichier html. Il doit y avoir un moyen de le faire, j'ai beaucoup d'images, les fichiers css, javascript que je veux charger dans la webview et je voudrais ne pas avoir tout dans la racine et changer toutes les références dans mon application web.
Vous devez vous connecter pour publier un commentaire.
C'est la façon de chargement/utilisation d'un local au format html avec des références relatives.
Utiliser le code donné ci-dessous. Il doit travailler comme un charme.
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"www"]];
[webview loadRequest:[NSURLRequest requestWithURL:url]];
Maintenant, tous vos liens relatifs(comme img/.gif, js/.js) dans le code html doit être résolues.
Swift 3
@"www/app"
pour le répertoire arg?Dans Swift:
requestURL
bien.Je l'ai bourré le tout dans une seule ligne (mauvais, je le sais) et n'avait pas de problèmes avec elle:
Je simplement faire ceci:
Où "index.html" relativement références des images, CSS, javascript, etc.
Réponse rapide 2.
La UIWebView De Référence De Classe déconseille l'utilisation de webView.loadRequest(demande):
Dans cette solution, le html est lu en une chaîne de caractères. Le html de l'url est utilisée pour déterminer le chemin d'accès, et passe comme une url de base.
Je l'ai remonté et testé et re-testé, il semble que la seule façon que je peux le faire fonctionner (depuis que j'ai des fichiers dans le dossier img et certains en js/css, etc...) est de ne pas utiliser un chemin d'accès relatif à mon image dans le html et tout ce qu'référencée pour le bundle dossier. Quel dommage :(.
@sdbrain réponse rapide 3:
Dans Swift 3.01 à l'aide de WKWebView:
Cette règle pour certains de la plus fine changements de syntaxe dans 3.01 et maintient la structure de répertoire en place de sorte que vous pouvez intégrer ces fichiers HTML.
let localURL = URL.init(fileURLWithPath: Bundle.main.path(forResource: "index", ofType: "html", inDirectory: "mapa_procesos")!) webView.loadRequest(URLRequest(url: localURL))