13

-webkit-text-size-adjustiOS 5 と iOS 6 で UIWebView の CSS プロパティを使用すると、行の高さが正しく表示されません。すべての 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>

属性の値を 50% にすると-webkit-text-size-adjust、テキスト全体のサイズが (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 の動作は、私のテストによると、font-size と line-height の両方の値を小さくすることです。行の高さの値がパーセントで指定されていてもです。(これはバグのようです。) したがって、iOS 6.0 では、このテキストを私が書いたかのように表示しますfont-size: 1em; line-height: 75%;。その結果、行の高さがフォント サイズの 75% になるように計算されます。つまり、テキストの行が非常に接近していて、ほとんど重なっています。

iOS 6.0 での解決策は、line-height: 3em;. ただし、これは iOS 5.1 では機能しません。

iOS のバージョンに依存する CSS 属性はないと思います。アプリケーションを両方の iOS バージョンで動作させるにはどうすればよいですか?

4

2 に答える 2

1

このように設定してみましたか{ line-height:1.5 }?これは 2em フォントの 3 に相当しますが、ハードコードされたem値ではなく、フォントの 1.5 倍の高さで行の高さをレンダリングするようにデバイスに指示します。

編集:まだバグだとは思わないでください。サイズ調整を実行する前に、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>
于 2012-12-28T03:56:53.830 に答える
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.
}
于 2013-01-08T21:20:31.460 に答える