我需要将我的NSWindow放在屏幕的右上角,就在菜单栏的下方(如通知)。这样做的最佳方法是什么?
问问题
4299 次
2 回答
11
您可以使用以下方法将窗口位置设置为右上角:
- (void)setWindowPosition
{
NSPoint pos;
pos.x = [[NSScreen mainScreen] visibleFrame].origin.x + [[NSScreen mainScreen] visibleFrame].size.width - [_window frame].size.width ;
pos.y = [[NSScreen mainScreen] visibleFrame].origin.y + [[NSScreen mainScreen] visibleFrame].size.height - [_window frame].size.height ;
[_window setFrameOrigin : pos];
}
在您的 中调用此方法applicationDidFinishLaunching:
,并将 windowDidResizeNotification
处理调整大小事件的方法注册为:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[self setWindowPosition]; //set window pos
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:NSWindowDidResizeNotification object:nil]; //register resize notification
}
现在在您的通知处理程序方法中,再次更新窗口位置。
- (void)handleNotification: (id) sender
{
[self setWindowPosition];
}
于 2013-10-30T08:44:42.353 回答
1
(未经测试)
// Assumes self is the NSWindow subclass
NSRect sf = [[NSScreen mainScreen] visibleFrame];
NSRect wf = self.frame;
self.frame = NSMakeRect(NSWidth(sf) - NSWidth(wf), NSHeight(sf) - NSHeight(wf),
wf.size.width, wf.size.height);
于 2013-10-29T16:13:26.897 回答