2016-08-20 21 views
2

在我的Native React項目中,我想使用WebView。 HTML指的是一個外部的css文件,而css文件引用了一些自定義的字體。爲了WebView正確加載css和字體文件,我應該給WebView哪個基礎url?

鑑於這種hierarki:

app/ 
app/index.ios.js 
app/android.ios.js 
app/package.json 
app/node_modules 
app/android/ 
app/ios/ 

我應該在哪裏放置文件「mycss.css」和「字體/」文件夾, 什麼我對子級使用的的baseUrl?構建ios和android構建時,包管理器是否會自動包含css和字體文件?

<WebView style={{flex: 1}} 
      source={ { html: my_html, 
         baseUrl: ???} } /> 

檢查在iOS後面web視圖的代碼顯示baseUrl被切換到一個UIWebView。這個StackOverFlow問題How can I add an external stylesheet to a UIWebView in Xcode?演示瞭如何從Objective C中設置baseUrl,但Native React中的等效內容是什麼?

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

FWIW我在iOS上開發(但希望有一種方法可以使這兩個平臺上的工作)。

回答

2

以下工作。

添加的文件夾web和使用這樣的結構:

app/web/mycss.css 
app/web/fonts 

二手web/作爲基本URL。

拼圖的最後一部分是將web文件夾添加到XCode項目(在XCode中執行此操作)。否則,web文件夾中的文件不包含在爲ios設備構建的包中。

+0

我設法讓這個工作在iOS上...任何人都知道如何爲Android做到這一點? –

+0

在Android上沒有嘗試過。 – soegaard

+0

@soegaard你能顯示「my_html」字符串的內容嗎? 我需要檢查如何在圖像上定義路徑。 – rajaishwary