webkitview que example iphone html css uiwebview

iphone - que - ¿Cómo puedo agregar una hoja de estilo externa a un UIWebView en Xcode?



wkwebview ios (4)

He mirado varias preguntas y respuestas similares y todavía no puedo hacer que esto funcione, así que estoy agregando mi propia pregunta:

Estoy jugando con UIWebView. Puedo crear una página html con CSS en línea. No puedo descubrir cómo cargar el CSS si está en un archivo en el grupo de recursos de la aplicación.

Mi código es:

NSString *path = [[NSBundle mainBundle] pathForResource:@"webViewPage2" ofType:@"html"]; NSFileHandle *readHandle = [NSFileHandle fileHandleForReadingAtPath:path]; NSString *htmlString = [[NSString alloc] initWithData: [readHandle readDataToEndOfFile] encoding:NSUTF8StringEncoding]; webView.opaque = NO; webView.backgroundColor = [UIColor clearColor]; [self.webView loadHTMLString:htmlString baseURL:nil]; [htmlString release];

Y mi llamada html es esta:

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no, width=device-width"> <link rel="stylesheet" type="text/css" media="only screen and (max-device-width: 480px)" href="/greek123.css" /> </head> <body style="background-color: transparent;"> <h2>Some Title</h2> <p>We can put instructions here. Such as: "uh-oh You should not have pushed that button!" </p> </body> </html>

Apreciaría cualquier idea o solución. ¡Muchas gracias!


Creo que lo he descubierto. el htmlString es simplemente un NSString que podemos reemplazar el texto en él. este código funcionó para mí

NSString *info = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"your html file name" ofType:@"html"] encoding: NSUTF8StringEncoding error: &error]; info=[info stringByReplacingOccurrencesOfString:@"styles.css" withString:@"stylesIPad.css"];


Pensé que debería publicar el bloque de código completo para acceder a un archivo CSS externo. Con suerte, será útil para otros:

- (void)viewDidLoad { NSURL *mainBundleURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]; NSString *path = [[NSBundle mainBundle] pathForResource:@"mypagename" ofType:@"html"]; NSFileHandle *readHandle = [NSFileHandle fileHandleForReadingAtPath:path]; NSString *htmlString = [[NSString alloc] initWithData: [readHandle readDataToEndOfFile] encoding:NSUTF8StringEncoding]; webView.opaque = NO; webView.backgroundColor = [UIColor clearColor]; [self.webView loadHTMLString:htmlString baseURL:mainBundleURL]; [htmlString release]; }


cambie la baseURL de UIWebView a la url de su mainbundle.

NSURL *mainBundleURL = [[NSBundle mainBundle] bundleURL]; [self.webView loadHTMLString:htmlString baseURL:mainBundleURL];

Swift 3:

webView.loadHTMLString(contentString, baseURL: Bundle.main.bundleURL)


NSURL *BundleURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"name your style" ofType:@"css"]]; webView.opaque = NO; webView.backgroundColor=[UIColor clearColor]; [webView loadHTMLString:htmlString baseURL:BundleURL];