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