これは、標準(カスタムではない)ココアで描画されるテキストの座標を取得できますか?実際には、テキストのベースライン、y軸のオフセット値(ビューのフレーム矩形のy原点を基準にして)が必要です。 Layout-> Show Layout Rectanglesが選択されている場合、これはInterface Builderがデザインペインに表示するものです。Cocoaはテキストの位置を制御しますか?
2
A
答えて
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:];で他のスペースに変換したいかもしれません。
また、「ceil」には近似値があります。すべてのコントロールがそうするわけではありません。いくつかは床、または他の丸め機能を使用することがあります。あるいは、彼らのタイトルを完全に違ったものにするかもしれません。この近似はうまくいかないでしょう。
関連する問題
- 1. div内のテキストの垂直位置を制御しますか?
- 2. 配置時のテキストの位置を制御
- 3. TableCellの制御位置
- 4. ポップオーバーの位置を制御する
- 5. Cocoaの他のアプリケーションでのウィンドウの位置を制限しますか?
- 6. SelectFieldのポップオーバー位置アンカーの制御
- 7. Javaは他のプログラムからのウィンドウの位置を制御できますか?
- 8. Arduino PID DCモータ位置制御
- 9. CSSを使用してタイピングアニメーションのカーソル位置を制御する
- 10. オブジェクトの位置を制御するには
- 11. QSplashscreenの位置を制御する方法は?
- 12. プラグインなしで水平スクロールバーの位置を制御
- 13. この位置決め設定を制御するものは何ですか?
- 14. asp.netのポップアップウィンドウのサイズと位置を制御するC#
- 15. Winformsのツールチップの位置を制御する
- 16. ページ内のASP.NETコントロールの位置を制御する方法
- 17. コンボボックスで編集可能なテキストactionscript3を使用してカーソルの位置を制御する方法は?
- 18. tkinterのjustifyコマンドとanchorコマンドを使用して、ラベル内のテキストの位置を制御できません。
- 19. C#WinFormsが制御位置を乱した?
- 20. 角度材料の位置を制御する2オートコンプリートオプションパネル
- 21. iPhoneでオートコレクトビューの位置を制御する
- 22. バックグラウンド画像/パターンの位置を制御する
- 23. ブートストラップでポップオーバー・アローの位置を制御する方法4
- 24. スタンプファイルの位置を制御するスタンプPDFファイル
- 25. Windows Phoneでスクロールビューワのスクロール位置を制御する方法
- 26. WinForms TableLayoutPanelでコントロールの正確な位置を制御する
- 27. 自動位置決め制御(TableLayoutPanelなし)
- 28. カスタムボタンでGoogleマップ位置を制御する
- 29. アナログ値でMcp41010ワイパー位置を制御する方法
- 30. C#複数のモニター間でのメニュー位置の制御
これは正しいことに真の痛みです。 Adobe Lightroomでは、コントロール用の独自のレイアウトシステムが用意されています。テキストのベースラインがどこに描画されているかを確認するための真の恩恵だったツールの1つは、poseAs:を使用してデバッグコードを追加し、いくつかのグローバル描画コードを通常の描画の上に重ねて挿入することでした。基本的には、デバッグビルドでこれをオンにして、ベースラインが気になるすべてのコントロールにどこにあるのかを表示できます。あなたがこれをたくさんしているなら、それはあなたの時間を節約することになります。 私は所有権の性質上、コードを共有することはできません。申し訳ありません。 –
poseAs:Leopardでは非推奨です。 – IlDan