为何WKWebKit字体与iOS UILabel字体显示大小存在差异?
问题原因及解决方案
核心原因有两个:
- 单位不匹配:UILabel设置的字号单位是点(pt),而CSS中
font-size默认单位是像素(px)。iOS设备存在屏幕缩放因子(@2x、@3x),比如@3x屏幕下1pt=3px,你设置的50px实际仅相当于约16.7pt,远小于UILabel的50pt,所以显示大小差异明显。 - 样式未生效:你写的
<span style="font-size: \(fontSize)"></span>是个空标签,没有包裹实际的HTML内容,这个样式根本没应用到<p>和<a>元素上,等于白设置。
修正方案:
- 统一单位:在CSS里明确使用
pt作为字号单位,和UILabel的单位对齐。 - 正确应用样式:把HTML内容包裹到设置了样式的标签里,或者用全局样式定义。
比如修改代码如下:
override func viewDidAppear(_ animated: Bool) { let htmlStr = """ <p><a href="https://www.google.com">WebView-Button-size-50</a></p> """ let fontSize = 50 // 用span包裹内容,同时指定pt单位 let fontSetting = "<span style=\"font-size: \(fontSize)pt\">\(htmlStr)</span>" webView.loadHTMLString(fontSetting, baseURL: nil) webView.allowsBackForwardNavigationGestures = true }
或者更规范的方式,用
相关产品推荐
相关产品推荐

