163 votos

Utilizando HTML e imágenes locales dentro de UIWebView

Tengo un UIWebView en mi aplicación que quiero usar para mostrar una imagen que unirá a otra url.

Estoy usando

<img src="image.jpg" /> to load the image.

El problema es que no se carga la imagen (es decir. no puede ser encontrado) aunque se agrega como un recurso en mi proyecto y se copiará en el paquete.

He intentado utilizar NSBundle para obtener la ruta completa de la imagen y sigue usando y no aparece en la vista web.

¿Alguna idea?

291voto

Adam Alexander Puntos 10883

Utilizando rutas relativas o archivo: caminos para referirse a imágenes no funciona con UIWebView. En su lugar tienes que cargar el HTML en la vista con la correcta baseURL:

NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:path];
[webView loadHTMLString:htmlString baseURL:baseURL];

Entonces usted puede referir a tus imágenes como esta:

<img src="myimage.png">

(de uiwebview revisited)

46voto

Lithu T.V Puntos 10117

Utilice esto:

 [webView loadHTMLString:htmlString baseURL:[[NSBundle mainBundle] bundleURL]];
 

24voto

Anton Puntos 2036

Me encontré con este problema también. En mi caso, estaba lidiando con algunas imágenes que no fueron localizadas y otros que fueron, en varios idiomas. Una dirección URL base no obtener las imágenes dentro de carpetas localizadas para mí. He resuelto esto mediante los siguientes pasos:

// make sure you have the image name and extension (for demo purposes, I'm using "myImage" and "png" for the file "myImage.png", which may or may not be localized)
NSString *imageFileName = @"myImage";
NSString *imageFileExtension = @"png";

// load the path of the image in the main bundle (this gets the full local path to the image you need, including if it is localized and if you have a @2x version)
NSString *imagePath = [[NSBundle mainBundle] pathForResource:imageFileName ofType:imageFileExtension];

// generate the html tag for the image (don't forget to use file:// for local paths)
NSString *imgHTMLTag = [NSString stringWithFormat:@"<img src=\"file://%@\" />", imagePath];

A continuación, utilice imgHTMLTag en su código HTML UIWebView cuando se carga el contenido.

Espero que esto ayuda a quien encontré el mismo problema.

6voto

Sebastian Keller Puntos 521

Tuve un problema parecida, pero todas las sugerencias no ayudan.

Sin embargo, el problema era el mismo *.png. No tenía ningún canal alfa. De alguna manera Xcode ignora todos los archivos png sin canal alfa durante el despliegue del proceso.

2voto

Después de haber leído un par de capítulos en el iOS 6 Programación Cookbok y comenzó a aprender objective-c y programación iOS, me gustaría añadir, que si uno va a cargar los recursos de un paquete personalizado y usarla en una vista de la web, puede lograrse así:

NSString *resourcesBundlePath = [[NSBundle mainBundle] pathForResource:@"Resources" ofType:@"bundle"];
NSBundle *resourcesBundle = [NSBundle bundleWithPath:resourcesBundlePath];
[self.outletWebView loadHTMLString:[html description] baseURL:[resourcesBundle bundleURL]];

Luego, en el código html puede referirse a un recurso utilizando el paquete "personalizado" como la ruta de base:

body {
    background-image:url('img/myBg.png');
}

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X