我的应用通过URL加载了WebView,而不是html字符串。 我尝试了几种方法来更改字体,但是没有用。 我在下面使用这种方法。 请为我的英语不好提供一些帮助和抱歉!
NSString *fontFamilyStr = @"document.getElementsByTagName('body')[0].style.fontFamily='PingFangSC-Light';";
[webView stringByEvaluatingJavaScriptFromString:fontFamilyStr];
答案 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)
应用字体后
希望这会有所帮助
答案 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)