122 votes

Charger les ressources du chemin d’accès relatif à l’aide de html local en 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 -> Copier le 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.

287voto

sdbrain Points 1690

C'est la façon de chargement/utilisation d'un local au format html avec des références relatives.

  1. Faites glisser la ressource dans votre projet xcode (j'ai traîné un dossier nommé www de ma fenêtre du finder), vous aurez deux options "créer des groupes pour tout ajout de dossiers" et "créer des dossiers de références pour tout ajout de dossiers".
  2. Sélectionnez l'option "créer un dossier de références.." option.
  3. Utiliser le code donné ci-dessous. Il doit travailler comme un charme.

    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"www"]];

Maintenant, tous vos liens relatifs(comme img/.gif, js/.js) dans le code html doit être résolues.

24voto

Weles Points 55

SWIFT :

mainBundle Func (nom : String ?, ofType ext : String ?, inDirectory sous-tracé : String ?) -> chaîne ?

  • nom : nom du Hmtl ;
  • ofType ext : extension de type de fichier. Dans ce cas « html » ;
  • inDirectory sous-tracé : le dossier où sont les fichiers. Dans ce cas le fichier se trouve dans le dossier racine ;

5voto

PengOne Points 33226

J’ai tout entassés dans une seule ligne (mauvais que je sais) et n’eu aucun ennuis avec elle :

5voto

Old McStopher Points 2765

J’ai simplement procédez comme suit :

Où « index.html » Références relativement images, CSS, javascript, etc..

1voto

Matt Palmerlee Points 1036

Je suis allé de retour et testé et re-testé cette, il semble que la seule façon je peux faire fonctionner (car j’ai des fichiers dans le dossier img et certains en js/css, etc....) ne pas utiliser un chemin d’accès relatif à mon image dans le code html et ai tout référencé pour le dossier de l’ensemble. Quelle honte : (.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X