我正在寫一段代碼,以確保我創建的NSWindow始終適合屏幕。但是當我將屏幕設置爲低分辨率(1024 x 640)時,我的窗口仍比實際屏幕高一些,導致窗口的較低部分超出屏幕,因此無法觀看。這裏是我的代碼:如何確保NSWindows始終適合(小)屏幕?
NSWindowStyleMask style_mask = NSWindowStyleMaskTitled
| NSWindowStyleMaskClosable
| NSWindowStyleMaskDocModalWindow;
int visible_width = [[NSScreen mainScreen] visibleFrame].size.width;
int visible_height = [[NSScreen mainScreen] visibleFrame].size.height;
int width = std::min(visible_width, kDefaultWindowWidth);
int height = std::min(visible_height, kDefaultWindowHeight);
NSRect frame_rect = NSMakeRect(0, 0, width, height);
NSRect content_rect = [NSWindow
contentRectForFrameRect:frame_rect
styleMask:style_mask];
_myWindow = [[NSWindow alloc]
initWithContentRect:content_rect
styleMask:style_mask
backing:NSBackingStoreBuffered
defer:NO];
的問題是,這個代碼後,content_rect
有大小爲frame_rect
一樣的,如果窗口不會有一個標題。實際上,當我創建窗口時,它確實有一個標題(如預期的那樣)。我做錯了什麼嗎?
我嘗試了frameRectForContentRect :: styleMask(類方法)以及frameRectForContentRect(即時方法,在創建NSWindow之後調用),並且frame_rect和content_rect的大小仍然相同。 – trungdinhtrong