2016-06-21 57 views
0

我使用一個簡單的應用程序樣板這裏: https://github.com/hiven/WebViewFinagler設置NSWindow全方位的寬度和高度不工作

它只是打開谷歌的負載。我編譯過它,它工作正常,但它打開在一個非常小的窗口(480 x480)。我可以在X代碼中看到一個側面菜單,但它只允許我以像素爲單位設置窗口的位置和窗口的大小。

但是,我想要佔用整個屏幕(不是全屏) - 但我也不想將我的mac的分辨率硬編碼到它中,因爲我希望它可以在不同屏幕分辨率的筆記本電腦上工作。

它不會讓我在寬度和高度上都達到100%,那麼如何讓這個應用程序打開並佔據整個可用的屏幕區域?

在我的代碼,我有這個,但它不工作,應用剛剛起步的小在底角:

MDAppDelegate.m

#import "MDAppDelegate.h" 
#import <WebKit/WebKit.h> 


@implementation MDAppDelegate 

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 
    NSWindow* myWindow; //Your window object to maximize 
    [myWindow setFrame:[[NSScreen mainScreen] visibleFrame] display:YES]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://www.google.com/"]]; 
    [self.webView.mainFrame loadRequest:request]; 
} 

@end 

回答

1

所添加的代碼可能會崩潰或什麼都不做:

NSWindow* myWindow; // uninitialized pointer refers to nothing (nil) 
[myWindow setFrame:[[NSScreen mainScreen] visibleFrame] display:YES]; 

最後一行將消息發送到myWindow,這是nil,因此消息只被忽略。

你可以做幾件不同的事情。您遇到的問題是,你沒有得到你想要最大化的實際窗口,這是在頭文件中定義爲window參考:

@property (assign) IBOutlet NSWindow *window; 

所以,理論上你就可以更改您的代碼中下面和它的工作:

NSWindow* myWindow = self.window; 
[myWindow setFrame:[[NSScreen mainScreen] visibleFrame] display:YES]; 

但是,它會更有意義,以擺脫第一線的,只是用self.window直接:

[self.window setFrame:[[NSScreen mainScreen] visibleFrame] display:YES]; 

這就是說,我們可以更加簡化它,因爲NSWindow已經有一個方法可以最大化窗口占用整個屏幕:performZoom:

[self.window performZoom:nil]; 

你可以有窗口的大小,並在Interface Builder的窗口設置自動保存名稱後退出並重新啓動自動保存的尺寸。 (我想我忘了給示例代碼項目添加一個)。

+0

[self.window performZoom:nil];完美地工作,非常感謝你解釋它。 – Jimmy