如何在iOS5和iOS6上修复有缺陷的webkit-text-size-adjust?

时间:2012-10-31 13:53:10

标签: ios css webview

在iOS 5和iOS 6下的UIWebView中使用-webkit-text-size-adjust CSS属性时,我得到的线条高度不正确。在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; line-height: 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; line-height: 75%;一样。结果是行高被计算为字体大小的75%,即文本行非常接近,它们几乎重叠。

iOS 6.0上的解决方案是编写line-height: 3em;。但这不适用于iOS 5.1。

我认为没有对iOS版本敏感的CSS属性...如何让我的应用程序在两个iOS版本上都能正常工作?

2 个答案:

答案 0 :(得分:1)

您是否尝试过设置{ 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>

答案 1 :(得分:0)

关于你的问题,我以非常非常丑陋的方式解决了这个问题:

在发布时,我正在获取iOS版本,并且我将存储在我的应用程序部分中。 比我需要的工作方式不同于我正在做的事情

if(osVersion < 5){
// iOS 4.3 properly working code here
}
else if (osVersion < 6){
// iOS 5.0 and 5.1 properly working code here
}
else{
// iOS 6 properly working code here.
}