在 iOS 5 和 iOS 6 下的 UIWebView 中使用 -webkit-text-size-adjust
CSS 属性时,我得到不正确的行高渲染。似乎在 iOS 5 和 iOS 5 中都有一个错误iOS 6,但行为不同,我正在尝试修复演示文稿,使其适用于所有 IOS 版本。
我想要实现的目标:我正在将以下 HTML 代码加载到 UIWebView 中。该代码仅设置所有文本的字体大小、行高和文本大小调整。
<html><head>
<style language="text/css">
body {
-webkit-text-size-adjust : 50%;
}
p {
font-size: 2em;
line-height: 3em;
/* line-height: 150%; */
}
</style>
</head><body>
<p>Text text text... </p>
</body>
属性 -webkit-text-size-adjust
的值 50% 应该减少(50%)整个文本的大小。同时减小字体大小和行高是有意义的,否则文本看起来会很难看。现在,似乎 iOS 5.1 和 iOS 6 都没有始终如一地做到这一点。 (在我的应用程序中,我必须使用属性 -webkit-text-size-adjust
因为用户应该能够更改文本大小。)
iOS 5.1 的行为是减小字体大小;行高保持在相同的值。所以 iOS 5.1 会解释上面的 HTML,就好像我写了 font-size: 1em;行高:3em;
。 iOS 5.1 上的 UIWebView 将显示行间有巨大间隙的小文本。
iOS 5.1 的解决方案是编写 line-height: 150%;
而不是 line-height: 3em
。然后 iOS 5.1 将 line-height
值保持在 150% 不变,同时减小了字体大小。因此,文本显示是正确的。
根据我的测试,iOS 6.0 的行为是同时减小字体大小和行高值,即使行高值以百分比。 (这似乎是一个错误。)因此,iOS 6.0 将显示此文本,就好像我写了 font-size: 1em;行高:75%;
。结果是行高被计算为字体大小的 75%,即文本行靠得太近以至于几乎重叠。
iOS 6.0 上的解决方法是写line-height: 3em;
。但这不适用于 iOS 5.1。
我认为没有对 iOS 版本敏感的 CSS 属性...我怎样才能让我的应用程序在两个 iOS 版本上工作?
最佳答案
您是否尝试过这样设置 { line-height:1.5 }
。它相当于 3 和 2em 字体,但告诉设备以比字体大 1.5 倍的高度呈现行高,而不是硬编码的 em
值。
编辑: 仍然不认为这是一个错误。我认为您在触发尺寸调整之前没有告诉 CSS 足够多。
以下代码在 iOS 5.1 和 6.0 中看起来完全相同:
html { font-size:40px }
body {
font-size:0.5em; /* without this.. */
-webkit-text-size-adjust : auto; /* 50% is arbitrary */
}
p {
font-size: 2em;
line-height: 1.5;
margin-bottom:3em;
}
<p>Text text text...</p>
<p>Text text text...</p>
<p>Text text text...</p>
<p>Text text text...</p>
关于ios - 如何修复 iOS5 和 iOS6 上有问题的 webkit-text-size-adjust?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13159581/