2

Mac OS Xアプリケーションのウィンドウのタイトルバーの右側にプログレススピナーを配置しようとしていますが、ビューを内部にドラッグできないため、InterfaceBuilderでは配置できません。それ。

applicationDidFinishLaunchingそこで、 AppDelegate.mのメソッド内に次のコードを使用して、プログラムでタイトルバーに配置しようとしました。

loadingSpinner = [[NSProgressIndicator alloc] init];
[loadingSpinner setFrame:NSMakeRect(485, 0, 17, 17)];
[loadingSpinner setStyle:NSProgressIndicatorSpinningStyle];
NSView *titleBarView = [[_window standardWindowButton:NSWindowCloseButton] superview];
[titleBarView addSubview:loadingSpinner];

ただし、これにより、進行状況スピナービューがタイトルバーではなくウィンドウの下部に表示されます。NSMakeRect()は、ウィンドウの上部ではなく下部を基準にして配置しているようです。

NSMakeRectの2番目のパラメーター(y位置)を370のようなものに変更すると、ロードスピナーが希望の場所に配置されますが、ウィンドウのサイズを垂直方向に変更すると、プログレススピナーが一番下に表示されます。

私はこれまでこのようなものを見たことがありません。どうすれば修正できますか?

PS:また、タイトルバービューを取得するための「より正しい」方法があるかどうかもわかりません。ご覧のとおり、閉じるボタンビューのスーパービューを使用して取得していますが、これは少し「汚い」ようです。

4

1 に答える 1

2

Randall Brown は、ブログの NSWindow のタイトル バーにボタンを配置するコードをいくつか持っています。あなたは正しい軌道に乗っていました。閉じるボタンのスーパービューは、タイトル バーを含むウィンドウ全体です。でそれを取得するのは少しハッキーではありません[[_window contentView] superview]

于 2012-06-10T01:09:48.070 に答える