tutorial for example crear iphone resources uiwebview

for - iPhone Dev: UIWebView baseUrl a recursos en la carpeta Documentos y no en el paquete de aplicaciones



webview ios swift example (3)

Después de algunas búsquedas en Google, finalmente he encontrado una solución adecuada para la pregunta que formulé. Esperemos que esto ayude a aquellos que enfrentan el mismo problema.

El truco está en el formato de la ruta de la cadena cuando se crea un objeto NSURL para la baseURL de un UIWebView. Aunque usualmente uso el típico "Users /...../ dir / file" en la mayoría de los casos, la carga mediante el uso de loadHTMLString de UIWebView: baseURL necesita un enfoque diferente.

Como se describe en http://dblog.com.au/iphone-development/loading-local-files-into-uiwebview/ , donde obtuve la solución, la ruta de la cadena a los recursos solo necesita tener barras inclinadas para ser reemplazadas con doble barras y espacios con% 20:

NSString *imagePath = [[NSBundle mainBundle] resourcePath]; imagePath = [imagePath stringByReplacingOccurrencesOfString:@"/" withString:@"//"]; imagePath = [imagePath stringByReplacingOccurrencesOfString:@" " withString:@"%20"]; NSString *HTMLData = @" <h1>Hello this is a test</h1> <img src="sample.jpg" alt="" width="100" height="100" />"; [webView loadHTMLString:HTMLData baseURL: [NSURL URLWithString: [NSString stringWithFormat:@"file:/%@//",imagePath] ]];

Tome nota de la sustitución de las cuerdas y también el:

[NSString stringWithFormat:@"file:/%@//",imagePath]

Aunque el código de ejemplo anterior está recuperando la ruta al mainBundle de la aplicación, también puede funcionar en otras carpetas, es decir, Documentos (y sus subcarpetas) como hice en la mía.

Saludos cordiales, oonoo

PS Gracias de nuevo Nic por la respuesta :)

¡Saludos! ¿Puede alguien ayudarme por favor amablemente a encontrar una manera de evitar lo siguiente?

  • cargue un html en un UIWebView usando loadHTMLString e incluya (usando baseURL ) los recursos como el CSS, los archivos de imagen de las carpetas dentro del directorio de Documentos del usuario, y no del MainBundle de la aplicación.

He visto tutoriales sobre cómo usar baseURL para cargar dentro del paquete de aplicaciones / MainBundle, que es sencillo pero no con recursos de los directorios de Documentos del iPhone.

La estructura de mi carpeta de documentos es la siguiente:

dirX |---> file.xml |---> dirCSS |---> style.css

Puedo recuperar la ruta completa al directorio X (Usuarios /......./ dir X). Sin embargo, cuando se pasa esa ruta a la baseURL de UIWebView de modo que

[webView loadHTMLString:fileXMLString baseURL:pathToDirX]

... webView no reconoce los recursos (por ejemplo, style.css en dirCSS) como href''ed dentro del archivoXMLString

<link href="dirCSS/style.css" rel="stylesheet" />

Por lo tanto, actualmente mi aplicación puede cargar correctamente la cadena html, pero no carga la hoja de estilo, ya que el enlace al CSS dentro de la cadena html es relativo , por ejemplo. css / style.css

Cualquier ayuda es muy apreciada :)


Para obtener la ruta al directorio de documentos:

NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask ,YES ); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *path = [documentsDirectory stringByAppendingPathComponent:@"index.xml"]; [webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:path]]]

La forma más fácil de que todo funcione, es simplemente cargar su index.html desde el directorio del documento en lugar de cargar una cadena. De lo contrario, establezca la baseUrl en el directorio del documento.


// call this method and set the directory , Currently it is cache directory . If you want document directory then change NSCacheDirectory to NSDocumentDirectory -(NSString*)getBasePath { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSMutableString *cacheDirectory = [NSMutableString stringWithString:[paths objectAtIndex:0]]; [cacheDirectory appendString:@"/"]; NSRange renge= NSMakeRange(0, cacheDirectory.length); [cacheDirectory replaceOccurrencesOfString:@"/" withString:@"//" options:NSCaseInsensitiveSearch range:renge]; renge= NSMakeRange(0, cacheDirectory.length); [cacheDirectory replaceOccurrencesOfString:@" " withString:@"%20" options:NSCaseInsensitiveSearch range:renge]; [cacheDirectory insertString:@"file://" atIndex:0]; //file:////Users//hb//Library//Application%20Support//iPhone%20Simulator//6.0//Applications//3A141D33-390A-4DD2-8825-7DDC07D29894//Library//Caches// return cacheDirectory;

}