我正在尝试在我的 Mac OS X 应用程序窗口标题栏的右侧放置一个进度微调器,但我无法使用 Interface Builder 执行此操作,因为它不允许我将视图拖到里面它。
因此,我尝试以编程方式将其放在标题栏中,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 的第二个参数(y 位置)更改为 370 之类的值,它会将加载微调器放在我想要的位置,但显然当我垂直调整窗口大小时,它会将进度微调器放在底部。
我以前从未见过这样的事情。我该如何解决?
PS:另外,我不知道是否有“更正确”的方式来获取标题栏视图。如您所见,我正在使用关闭按钮视图的超级视图来获取它,这似乎有点“脏”。