在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版本上都能正常工作?
答案 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.
}