ios - 如何修复 iOS5 和 iOS6 上有问题的 webkit-text-size-adjust?

标签 ios css webview

在 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/

相关文章:

html 和 body 元素的高度

jquery - 悬停事件结束后 div 的动画不会停止

ios - swiftyjson 从 json 数组中获取字符串

iphone - uitableview 中返回的单元格数

CSS Transitions 表现不佳

macos - 如何实现x :y named delegate methods?

html - 使用 WkWebview 强制 HTML 内容适应设备宽度

android - 下载开始并显示应用程序后如何关闭 WebBrowser?

ios - 仅使用 iPad 测试 iOS 应用程序

ios - iOS 与 IPv6 和 Azure 的问题