swift 中如何自定义 WKWebView 的字体

这里每天分享一个 iOS 的新知识,快来关注我吧

前言

我们可以在 iOS 应用程序中使用自定义字体,相信大多数 iOS 开发者都知道怎么做,但是有时候我们也需要在 WKWebView 使用自定义字体,今天就来聊聊这个话题。

在 WKWebView 中使用自定义字体

我们先使用 WKWebView.loadHTMLString(_:baseURL:) 方法加载一段本地的静态 HTML:

xml 复制代码
let webView = WKWebView(frame: view.bounds)
view.addSubview(webView)

let htmlString = """
<!doctype html>
<meta name="viewport" content="width=device-width, initial-scale=1">
<div>Apple Swift iOS</div>
</html>
"""
webView.loadHTMLString(htmlString, baseURL: nil)

可以看到效果:

默认情况下,WKWebView 会使用 Times New Roman 字体,16 号大小。

使用系统支持的字体

iOS 系统本身自带了一些字体,可以在 WebView 的 CSS 中直接使用,直接修改 CSS 中的 style 即可,比如我们改成 Zapfino 字体:

xml 复制代码
let htmlString = """
<!doctype html>
<meta name="viewport" content="width=device-width, initial-scale=1">
<div style="font-family: Zapfino">Apple Swift iOS</div>
</html>
"""

可以看到效果:

在 WKWebView 中使用自定义字体

出了系统支持的字体,有时候我们还需要使用自定义的字体,比如安卓中常用的 Roboto 斜体。

1、将字体文件导入项目中(一般是 ttf 文件):

2、在 info.plist 文件中增加对应的标记:

后来测试发现不做这一步也可以

3、修改 HTML 字符串

在 HTML 中,要使用自定义字体,需要使用 @font-face 关键字,这个关键字可以将自定义字体文件加载到 CSS 中,

xml 复制代码
<!doctype html>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
    @font-face {
        font-family: 'Roboto-Italic';
        src: url("Roboto-Italic.ttf") format('truetype');
    }
</style>
<div style="font-family: Roboto-Italic">Apple Swift iOS</div>
</html>

4、将 app bundle 引入 WKWebView

为了能让 WKWebView 顺利访问字体文件,需要将字体文件所在的 Bundle 路径传入,我们这里字体文件在主 Bundle,所以直接传 Bundle.main.bundleURL

less 复制代码
webView.loadHTMLString(htmlString, baseURL: Bundle.main.bundleURL)

最后再运行代码,就能看到 Demo 中渲染了自定义字体:

这里每天分享一个 iOS 的新知识,快来关注我吧

本文同步自微信公众号 "iOS新知",每天准时分享一个新知识,这里只是同步,想要及时学到就来关注我吧!

相关推荐
2501_915909063 小时前
不用越狱就看不到 iOS App 内部文件?使用 Keymob 查看和导出应用数据目录
android·ios·小程序·https·uni-app·iphone·webview
@大迁世界4 小时前
液态玻璃屏正在侵蚀你的电池
macos·ios·objective-c·cocoa
pop_xiaoli5 小时前
【iOS】类与对象底层
macos·ios·objective-c·cocoa·xcode
sp42a5 小时前
NativeScript iOS 平台开发技巧
ios·nativescript·app 开发
2501_915921436 小时前
常用iOS性能测试工具大全及使用指南
android·测试工具·ios·小程序·uni-app·cocoa·iphone
for_ever_love__6 小时前
Objecgtive-C学习实例对象,类对象, 元类对象与 isa指针
c语言·学习·ios
一招定胜负7 小时前
视频转写+LLM分析:课堂录音自动化处理实现
macos·ios·xcode
2501_915918417 小时前
有没有Xcode 替代方案?在快蝎 IDE 中完成 iOS 开发的过程
ide·vscode·ios·个人开发·xcode·swift·敏捷流程
blackorbird7 小时前
通过攻陷合法网站传播的新型iOS漏洞利用工具包DarkSword
macos·ios·objective-c·cocoa
for_ever_love__10 小时前
Objective-C学习 NSSet 和 NSMutableSet 功能详解
开发语言·学习·ios·objective-c