2012-06-10 26 views
2

我想在我的Mac OS X应用程序窗口的标题栏右侧放置进度微调器,但我无法做到这一点与界面生成器,因为它不让我拖动视图里面。如何在Mac应用程序的标题栏中放置进度微调器

所以,我试图把它的标题栏编程,用下面的代码的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,它将加载微调器放在我想要的位置,但显然当我垂直调整窗口大小时,会将进度微调器一起至底部。

我从来没有见过这样的事情。我该如何解决这个问题?

P.S .:另外,我不知道是否有一个“更正确”的方式来获得标题栏视图。正如你所看到的,我使用关闭按钮视图的超级视图来获取它,这看起来有点“脏”。

回答

2

Randall Brown有一些代码可以在NSWindow的标题栏on his blog中放置一个按钮。你在正确的轨道上。关闭按钮的超级视图是包括标题栏的整个窗口。它有点不太好用[[_window contentView] superview]

+0

谢谢!我只是把'[loadingSpinner setAutoresizingMask:NSViewMaxXMargin | NSViewMinYMargin];'现在当窗口调整大小时,进度微调不会被移动。 –

相关问题