0
這是我在的applicationDidFinishLaunching功能代碼,編程方式創建的窗口不顯示爲正確的尺寸
// Create window
NSWindow *window = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 400, 300)
styleMask:(NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask)
backing:NSBackingStoreBuffered defer:NO];
//Create gl view
NSRect frame = [window contentRectForFrameRect:[window frame]];
MyOpenGLView *glView = [[MyOpenGLView alloc] initWithFrame:frame];
[window setContentView:glView];
[window makeFirstResponder:glView];
// Show up
[window makeKeyAndOrderFront:self];
應用程序構建並運行。但是,當它運行時,窗口似乎是全屏。換句話說,我在左上角獲得應用程序的名稱,而屏幕上沒有任何其他變化。它就像我的屏幕一樣的空窗口。爲什麼會發生這種情況,我該如何解決?
附加信息:在MyOpenGLView類initWithFrame功能,
self = [super initWithFrame:frameRect];
[self myInit];
return self;
爲什麼你寫'self.window = ...',而不是隻是'window = ...',同樣顯示時也一樣?我確實理解你關於ARC行爲和刪除它的觀點,因爲它認爲我不再需要它了。 – chromozonex
@ChromoZoneX:好吧,默認情況下,'window'的'@ synthesize''d ivar會被命名爲'_window'並帶有下劃線。您可以使用'_window'直接訪問代碼中的ivar,就像我在更新的例子中展示的那樣。在這種情況下,它可能不會影響你使用哪種方法.... – NSGod
非常好,非常感謝! – chromozonex