UIWebView中的字体大小与iOS字体大小不匹配
这是一个说“About”的UILabel。 iOS中精确设置为17.7。UIWebView中的字体大小与iOS字体大小不匹配
在它下面还有一个UIWebView,它也会显示“About”。也使用css精确设置为17.7。
他们不匹配。
如何正确解决此问题?
这是奇怪的是,在苹果自己的UIWebView中,尺寸依据不同?
HTML来测试...
<html><head>
<style type='text/css'>
body {
margin: 0px;
font-family: 'SourceSansPro-Light';
font-size: FONTPOINTSpt;
}
html { -webkit-text-size-adjust:none; }
</style></head>
<body leftmargin=0 topmargin=0>
About
</body></html>
行为是对设备或仿真器相同。
(注,从here我学到的比,也许是72.0/96.0)。
如果你想要的字体大小的UILabel
用途和字体大小的UIWebView
使用(通过CSS)你有你的CSS定义字体大小时使用的px
代替pt
之间的1对1的关系。
结帐这个例子HTML/CSS:
<html>
<head>
<style type='text/css'>
body {
font-family: 'SourceSansPro-Regular';
padding: 0
}
.point {
font-size: 17pt
}
.pixel {
font-size: 17px
}
</style>
</head>
<body>
<p class="point">About (17pt)<p>
<p class="pixel">About (17px)</p>
</body>
</html>
当您添加UIWebView
和UILabel
您UIViewController
并加载上面的HTML到UIWebView
和相同的字体设置为UILabel
:
override func viewDidLoad() {
super.viewDidLoad()
let webView = UIWebView(frame: CGRect(x: 25, y: 50, width:325 , height: 90))
view.addSubview(webView)
let filePath = NSBundle.mainBundle().URLForResource("test", withExtension: "html")
webView.loadRequest(NSURLRequest(URL: filePath!))
let label = UILabel(frame: CGRect(x: 25, y: 150, width: 325, height: 40))
label.font = UIFont(name: "SourceSansPro-Regular", size: 17)
label.text = "About (UILabel set to 17)"
view.addSubview(label)
}
您会得到以下输出:
是的,它的父字体大小问题:
你应该总是设置字体大小的身体16px(如果需要更大的基本字体,可以将其设置得更高,标准为16px)。
然后,使用16px作为基础设置字体大小。
body {
font-size: 16px;
}
h1 {
font-size: 24px;
}
如果你想在身体和H1字体大小既要一样,那么简单地定身font-size和不设置H1的字体大小(它会继承正文字体 - 全部自行设计......又名...级联)。
body {
font-size: 16px;
}
h1 {
}
您所做的一切被定身字体大小的值...然后设置H1字体大小相同的值,问题是H1继承了身体,然后将字体大小当您将字体大小分配给h1时,它会变得更大。
希望这是有道理的,并帮助。
我觉得你的困惑是因为CSS pt是一个印刷点(1/72英寸),但Apple的iOS文档使用“点”(例如, UIFont。pointSize)作为“虚拟像素”,它对应于CSS px。从@ joern的回答来看,它看起来像UIWebView使用1 css px = 1 ios虚拟px。 (我没有测试过这个)。但是,在我使用WKWebView的测试中,它看起来像CSS px等于一个设备像素。因此对于WKWebView,您需要:
let fontSize = UIScreen.main.scale * label.font.pointSize
let cssStr = String(format:"font-size: %.1fpx;", fontSize)
检查父容器的字体大小为两个About控件。我敢打赌其中一个已经有了一个字体大小的设置。如果这是你设置关于它的字体大小的情况,则需要考虑父字体大小。如果我能看到你的HTML和CSS,可能会更清楚。 – Lowkase