2

これは、標準の (カスタムではない) Cocoa コントロールで描画されたテキストの座標を取得することは可能ですか? 実際には、テキストのベースラインである y 軸のオフセット値 (ビューのフレーム四角形の y 原点に相対的) が必要です。これは、Layout->Show Layout Rectangles を選択したときに Interface Builder がデザイン ペインに表示するものです。

4

1 に答える 1

2

残念ながら、すべてのコントロールとセルで機能する単一のソリューションはありません。これらの方法を使用して、この情報の適切な概算を取得できるはずです。

-[NSCell titleRectForBounds:]
-[NSCell font]
-[NSFont ascender]

NSButton/NSButtonCell で機能するコードを次に示します。

NSRect titleRect = [[button cell] titleRectForBounds:[button bounds]];
CGFloat baseline = ceil(NSMinY(titleRect) + [[[button cell] font] ascender]);

この時点で、ベースラインはボタンの (境界) 座標空間にあります。-[NSView convertPoint:toView:]; を使用して別のスペースに変換することもできます。

また、その「天井」には近似値があります。すべてのコントロールがそうするわけではありません。床を張ったり、他の丸め関数を使用したりするものもあります。または、タイトルのレイアウトがまったく異なる可能性があり、この近似は機能しません。

于 2009-07-19T20:20:04.000 に答える