Tengo una aplicación iOS muy simple con una uiwebview cargando una página de prueba muy simple (test.html):
<html>
<body>
<img src="img/myimage.png" />
</body>
</html>
Cargo este archivo test.html en mi vista 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];
Esto funciona bien si hago referencia a la imagen sin la ruta relativa y pongo la imagen referenciada en la ruta raíz en Objetivos -> Copiar recursos del paquete dentro de XCode, sin embargo, no puedo hacer que funcione con la ruta relativa como se muestra en mi archivo html . Debe haber una manera de hacer esto, tengo muchas imágenes, css, archivos javascript que quiero cargar en la vista web y me gustaría no tener que tener todo en la raíz y cambiar todas las referencias en mi web aplicación
@"www/app"
para el directorio arg?En Swift:
fuente
requestURL
sin embargo.Metí todo en una línea (mal, lo sé) y no tuve problemas con eso:
fuente
Simplemente hago esto:
Donde "index.html" hace referencia relativamente a imágenes, CSS, javascript, etc.
fuente
Respuesta rápida 2.
La referencia de clase UIWebView desaconseja el uso de webView.loadRequest (solicitud):
En esta solución, el html se lee en una cadena. La url del html se usa para calcular la ruta y la pasa como una url base.
fuente
Regresé y probé y volví a probar esto, parece que la única forma en que puedo hacer que funcione (ya que tengo algunos archivos en la carpeta img y algunos en js / css, etc.) no es use una ruta relativa a mi imagen en el html y haga que todo haga referencia a la carpeta del paquete. Qué lástima :(.
fuente
La respuesta de @ sdbrain en Swift 3:
fuente
En Swift 3.01 usando WKWebView:
Esto se ajusta a algunos de los cambios de sintaxis más finos en 3.01 y mantiene la estructura de directorios en su lugar para que pueda incrustar archivos HTML relacionados.
fuente
let localURL = URL.init(fileURLWithPath: Bundle.main.path(forResource: "index", ofType: "html", inDirectory: "mapa_procesos")!) webView.loadRequest(URLRequest(url: localURL))