2011-07-29 11 views
6

UIWebView'ımın loadRequest'inde etkilenmesi gereken yerel bir CSS dosyasıyla UIWebView'ımı yüklemenin bir yolunu arıyorum.Bir CSS yerel dosyasıyla UIWebView'ı yükleyin

Netlik için: Yüklediğim bir UIWebView var, bunu bir web sitesi URL'si ile yükleyin. Ayrıca bu loadRequest url'yi etkilemesi gereken yerel bir CSS dosyasına sahibim.

Bu CSS dosyasını UIWebView'a yüklemek istiyorum.

sayesinde

cevap

3

Bu stackoverflow question size yardımcı olabilecek bir ya da iki cevap var gibi görünüyor.

Yerel CSS yüklemeniz gerekir (@Shrey kullanır aksine bir yöntem kullanarak ancak CSS dosyası arayan) ve bir şekilde sayfanın içine enjekte ve tek yol kullanmak gibi görünen:

ve bazı zeki JavaScript

[webview stringByEvaluatingJavaScriptFromString:someJavascriptToInjectCSS]; 
CSS Eklenecek sayfayı değiştirmek için.

Umut bu doğru yönde işaret yardımcı olur. Sayfalara malzeme enjekte etmek için bu yöntemi kullandım, bu yüzden işe yarıyor, ancak Javascript'i CSS'nizi sayfaya enjekte etmek için yazacak kadar iyi bilmiyorum.

+0

Üzgünüz, şimdi cevabın bağlantısını düzeltdim - şimdi düzenlenmiş. Js dahil olmak üzere, istediğiniz şeyi yapmak için görünen bu sayfaya bir cevap var. – iandotkelly

+0

Teşekkürler, ancak Google gibi siteleri yükleyen veya bu seçenekten vazgeçmem gereken UIWebView'a özel css dosyaları uygulamak mümkün mü? – jkigel

+0

Evet, cevabı SO sorusundan kullanabilirsiniz - atıfta bulunduğum cevap: http://stackoverflow.com/questions/1893715/is-it-possible-to-use-stringbyevaluatingjavascriptfromstring-with-javascript-whic/1895864 # 1895864 Bu cevap, bir CSS'nin yerel bir dosyadan yüklenmesini ve web görünümüne enjekte edilmesini gösterir. – iandotkelly

-1

bu deneyin:

[WebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]isDirectory:NO]]];

+1

o soran ne OP yapacak sanmıyorum. Yeni başlayanlar için yüklemek istedikleri yerel bir CSS dosyasıdır, bir html dosyası değil, daha sonra CSS'yi referans göstermeyen bir sayfaya enjekte etmek isterler. – iandotkelly

+0

Ardından web görüntüleme temsilci yöntemlerini kullanmayı deneyin. – Hisenberg

0

Bu, Swift sürümüdür.

Css dosyasını webViewDidFinishLoad temsilci yöntemine yükleyin ve stringByEvaluatingJavaScriptFromString kullanın. Kredi here

func loadWebViewStyles() { 
     guard let cssPath = NSBundle.mainBundle().pathForResource("theme", ofType: "css") else { 
      return 
     } 

     let loadStyles = "var script = document.createElement('link'); script.type = 'text/css'; script.rel = 'stylesheet'; script.href = '\(cssPath)'; document.getElementsByTagName('body')[0].appendChild(script);" 

     webView.stringByEvaluatingJavaScriptFromString(loadStyles) 
    }