質問
プログラムで NSTextView を作成したいと考えています。ビューに現在のデフォルト フォントで 1 行のテキストが表示されるように、正しいフレームの高さを決定するにはどうすればよいですか?
解決
NSFont クラスには、特定の属性文字列を囲む四角形のサイズを与えるメソッドがあります。テキスト ビューで使用されるフォントを取得し、テキスト ビューに表示される内容の適切な例として機能する文字列を作成し、それを使用してフレームの高さを通知します。(フレームの高さは、文字列が表示される実際の長方形よりもいくつかのポイント数大きい必要があります。)
あるいは、フォントからさまざまなメトリックを取得し、そこから適切なフレームを計算することもできます。それはうまくいくかもしれないし、うまくいかないかもしれない。たとえば、Apple Chancery のようなフォントには、レンダリングされるグリフや単語内の位置などに応じて、膨大な量のバリエーションがあります。何をレンダリングするのかを正確に知らずに、必要なサイズを事前に計算できるかどうかはわかりません。
他のヒント
単一行のテキストには NSTextView よりも NSTextField を使用する方が普通です。
NSTextField を使用する場合は、次のことを行うだけです。
[textField setFont:myFont];
[textField sizeToFit];
ああ、組み込みの「現在のデフォルトフォント」はありません。アプリケーションにそのような概念がある場合、アプリケーション自体がそれを追跡する必要があります。フォント パネルはグローバルなものの読み取りや書き込みを行わず、特定のテキスト オブジェクトを操作するために使用されます。
所属していません StackOverflow