2

sizeWithAttributesを取得するために使用しており、 を描画するために必要widthです。これは、 width に対して返される値が文字にぴったりと収まるため、 を取得するのにうまく機能しています。追加のパディングを追加せずに、最初の文字から最後の文字まで計算されます。しかし、それは私が望むよりも大きな値を返しています。これは、最も高い文字の上部から始まり、最も低い文字の下部までを計算する必要があるためです。たとえば、g の文字はベースラインより下まで伸びています。heightNSAttributedStringwidthheightheight

この API が「インテリジェント」であるとは思えません。文字列内のどの文字もベースラインを下回っていないにもかかわらず、返される高さが高すぎるためです。それらの属性で表示できる可能性のあるキャラクターを検討しているようです。

文字列の下の「余分なパディング」の量を差し引く方法が必要です。ベースラインが に対してどこにあるかを計算したいheight、またはベースラインの下の領域に割り当てられているスペースの量を計算する他の方法を考えています。下の図は、パディング量が少し極端ですが、何が起こっていると私が信じているかを視覚的に説明しています.

-------------

--greetings--
              <-get rid of this 'extra' padding
-------------

私は同じ寸法が得られると信じてboundingRectWithSize:options:context:いますが、文字列のサイズを計算する他の (非推奨ではない) API については知りません。

4

1 に答える 1

2

UIFont属性ascender(ベースラインより上の高さ) とdescender(負、ベースラインより下の高さ) があります。これはおそらくあなたが探しているものです。

于 2014-10-06T06:15:33.707 に答える