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