在iOS中从Webview更改字体

时间:2018-07-12 06:40:45

标签: javascript ios objective-c uiwebview

我的应用通过URL加载了WebView,而不是html字符串。 我尝试了几种方法来更改字体,但是没有用。 我在下面使用这种方法。 请为我的英语不好提供一些帮助和抱歉!

NSString *fontFamilyStr = @"document.getElementsByTagName('body')[0].style.fontFamily='PingFangSC-Light';";
[webView stringByEvaluatingJavaScriptFromString:fontFamilyStr];

3 个答案:

答案 0 :(得分:1)

在加载到webView中之前,只需在字符串中添加一个<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:bind="http://schemas.android.com/apk/res-auto"> <data> <variable name="result" type="com.example.tai.rxjava2practice2.Model.Result"></variable> </data> <data> <variable name="image" type="com.example.tai.rxjava2practice2.Model.Image"></variable> </data> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/tv_MovieName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/iv_Avatar" android:layout_weight="1" android:text="@{result.title}" android:textSize="16dp" /> <TextView android:id="@+id/tv_ReleaseDate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/iv_Avatar" android:layout_weight="1" android:gravity="right" android:text="@{result.releaseDate}" android:textSize="16dp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <ImageView android:id="@+id/iv_Avatar" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="10dp" android:src="@{image.imageUrl}" /> </LinearLayout> </LinearLayout> 标记即可。

<font face>

答案 1 :(得分:1)

我不确定您要在代码中调用stringByEvaluatingJavaScriptFromString的位置,您应该在webView加载完成后立即调用它,因为如果您尝试修改UI HTML页面(通过更改字体),尝试在网页加载完成之前运行JavaScript命令,尽管您的javaScript代码已运行,但由于它们可能尚未完成呈现,因此它无法修改其组件的属性。

因此

第1步:

将ViewController设为navigationDelegate的{​​{1}}

webView

第2步:

将扩展名添加到ViewController并确认到webView.navigationDelegate = self

WKNavigationDelegate

第3步:

请注意使用'\'转义extension ViewController : WKNavigationDelegate { func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { let changeFontFamilyScript = "document.getElementsByTagName(\'body\')[0].style.fontFamily = \"Impact,Charcoal,sans-serif\";" webView.evaluateJavaScript(changeFontFamilyScript) { (response, error) in debugPrint("Am here") } } } 中的特殊字符,例如单行(')和双行(()),这些都是上面代码中所缺少的

第4步:

如果您的网页找不到指定的FontFamily,请确保提供正确的FontaFamilies和选项以供使用(查看我指定的3种字体名称Impact,Charcoal,sans-serif)

O / P

没有NavigationDelegate(没有运行javaScript)

enter image description here

应用字体后

enter image description here

希望这会有所帮助

答案 2 :(得分:0)

让它尝试一下。它对我有用。希望对您有帮助。

let styles = "<html><head>"
        + "<style type=\"text/css\">body{font-size:20px;font-family:Helvetica;}"
        + "</style></head>"
        + "<body>" + "</body></html>"

    self. webView.loadHTMLString(styles, baseURL: nil)