2
我正在研究一个主窗口有NSDrawer的应用程序。至关重要的是,抽屉总是在右边打开,这就是我编码它的工作原理。我想知道的是,如果有办法检测抽屉是否会“脱离屏幕”......有没有办法可以检测到这一点?如果是这样,怎么样?此外,如何移动主窗口以调整打开的抽屉宽度?如何检测NSDrawer是否会关闭屏幕
在此先感谢。
尼克
编辑:
下面是解感谢Rob的建议。
-(IBAction)toggleDrawer:(id)sender
{
NSRect screenFrame = [[[NSScreen screens] objectAtIndex:0] visibleFrame];
NSRect windowFrame = [window frame];
NSRect drawerFrame = [[[drawer contentView] window] frame];
if ([drawer state] == NSDrawerOpenState)
{
[drawer close];
}
else
{
if (windowFrame.size.width +
windowFrame.origin.x +
drawerFrame.size.width > screenFrame.size.width)
{
NSLog(@"Will Open Off Screen");
float offset = (windowFrame.size.width +
windowFrame.origin.x +
drawerFrame.size.width) - screenFrame.size.width;
NSRect newRect = NSMakeRect(windowFrame.origin.x - offset,
windowFrame.origin.y,
windowFrame.size.width,
windowFrame.size.height);
[window setFrame:newRect display:YES animate:YES];
}
[drawer openOnEdge:NSMaxXEdge];
}
}
完美。谢谢。对于任何感兴趣的人,我已经添加了我用于问题的代码。 – nrj 2009-09-01 13:43:33
整洁的解决方案,你们俩!这可能是一个选项,从宽度而不是原点减去'newRect'中的'offset'。 – 2014-07-16 10:04:16