これは、標準(カスタムではない)ココアで描画されるテキストの座標を取得できますか?実際には、テキストのベースライン、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. TableCellの制御位置
- 3. ポップオーバーの位置を制御する
- 4. Cocoaの他のアプリケーションでのウィンドウの位置を制限しますか?
- 5. Javaは他のプログラムからのウィンドウの位置を制御できますか?
- 6. QSplashscreenの位置を制御する方法は?
- 7. オブジェクトの位置を制御するには
- 8. プラグインなしで水平スクロールバーの位置を制御
- 9. asp.netのポップアップウィンドウのサイズと位置を制御するC#
- 10. ページ内のASP.NETコントロールの位置を制御する方法
- 11. Winformsのツールチップの位置を制御する
- 12. C#WinFormsが制御位置を乱した?
- 13. コンボボックスで編集可能なテキストactionscript3を使用してカーソルの位置を制御する方法は?
- 14. この位置決め設定を制御するものは何ですか?
- 15. スタンプファイルの位置を制御するスタンプPDFファイル
- 16. Windows Phoneでスクロールビューワのスクロール位置を制御する方法
- 17. iPhoneでオートコレクトビューの位置を制御する
- 18. バックグラウンド画像/パターンの位置を制御する
- 19. アナログ値でMcp41010ワイパー位置を制御する方法
- 20. C#複数のモニター間でのメニュー位置の制御
- 21. win32プログラミングにおけるリソースと制御の位置
- 22. sparkを制御する方法FlexでDatagridのスクロールバーの位置は?
- 23. Asp.netログイン制御 - パスワードのテキスト
- 24. ユーザコントロールレベルでの置換制御?
- 25. STATICテキストのWM_SETTEXTは制御内容を更新しません。
- 26. Wpfはオーバーレイを制御しますか?
- 27. アンドロイドWebviewClient、テキスト選択制御
- 28. asp.net databind labelページのベースクラスのプロパティにテキストを制御します。
- 29. テキストとそのカーソル位置を編集しますか?
- 30. JCheckboxはテキストの位置を変更します
これは正しいことに真の痛みです。 Adobe Lightroomでは、コントロール用の独自のレイアウトシステムが用意されています。テキストのベースラインがどこに描画されているかを確認するための真の恩恵だったツールの1つは、poseAs:を使用してデバッグコードを追加し、いくつかのグローバル描画コードを通常の描画の上に重ねて挿入することでした。基本的には、デバッグビルドでこれをオンにして、ベースラインが気になるすべてのコントロールにどこにあるのかを表示できます。あなたがこれをたくさんしているなら、それはあなたの時間を節約することになります。 私は所有権の性質上、コードを共有することはできません。申し訳ありません。 –
poseAs:Leopardでは非推奨です。 – IlDan