字体适用于模拟器但不适用于 iOS 设备
Font works on Simulator but not iOS device
已经有一些问题与此问题相关,但我的情况不同。在我的例子中,字体是从 zip 文件下载并保存在这里的:
let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first
这是 HTML 字符串:
<html>
<head>
<style type=text/css>
@font-face { font-family: 'Rubik-Regular'; src: url('Rubik-Regular.ttf'); }
@font-face { font-family: 'Rubik-Semibold'; src: url('Rubik-Medium.ttf'); }
b { font-size:20px; color:#373534; letter-spacing: 1.27px; line-height: 30px; font-family: 'Rubik-Semibold'; background:transparent;)
}
p { text-align:left; font-size:20px; color:#373534; letter-spacing: 1.27px; line-height: 30px; font-family: 'Rubik-Regular'; background:transparent; }
</style>
</head>
<body>
<header>
<meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0'>
<p>This is the text for the HTML and we <b>BOLD</b> this part</p>
</header>
</body>
</html>
然后我在我的 webView 上调用 loadHTMLString:
let url = URL(fileURLWithPath: path!)
wkWebView.loadHTMLString(htmlString, baseURL: url)
不确定为什么它能在模拟器和 Android 设备上完美加载,但 HTML 字符串在真实设备上会出现问题。为什么真机无法从本地存储加载字体?
我在原始实现中遗漏的是 loadFileURL(_ URL, _ URL) 方法。此方法应在调用 loadHTMLString 之前,对我有用的是在我的自定义视图 class.
中的 awakedFromNib 方法中调用 loadFileURL()
已经有一些问题与此问题相关,但我的情况不同。在我的例子中,字体是从 zip 文件下载并保存在这里的:
let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first
这是 HTML 字符串:
<html>
<head>
<style type=text/css>
@font-face { font-family: 'Rubik-Regular'; src: url('Rubik-Regular.ttf'); }
@font-face { font-family: 'Rubik-Semibold'; src: url('Rubik-Medium.ttf'); }
b { font-size:20px; color:#373534; letter-spacing: 1.27px; line-height: 30px; font-family: 'Rubik-Semibold'; background:transparent;)
}
p { text-align:left; font-size:20px; color:#373534; letter-spacing: 1.27px; line-height: 30px; font-family: 'Rubik-Regular'; background:transparent; }
</style>
</head>
<body>
<header>
<meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0'>
<p>This is the text for the HTML and we <b>BOLD</b> this part</p>
</header>
</body>
</html>
然后我在我的 webView 上调用 loadHTMLString:
let url = URL(fileURLWithPath: path!)
wkWebView.loadHTMLString(htmlString, baseURL: url)
不确定为什么它能在模拟器和 Android 设备上完美加载,但 HTML 字符串在真实设备上会出现问题。为什么真机无法从本地存储加载字体?
我在原始实现中遗漏的是 loadFileURL(_ URL, _ URL) 方法。此方法应在调用 loadHTMLString 之前,对我有用的是在我的自定义视图 class.
中的 awakedFromNib 方法中调用 loadFileURL()