我在这里使用一个简单的应用程序样板: https://github.com/hiven/WebViewFinagler
它只是在加载时打开谷歌。我编译了它,它工作正常,但它打开一个非常小的窗口(480 x480)。我可以看到x-code中的侧边菜单,但它只允许我设置窗口的位置和窗口的大小(以像素为单位)。
但是,我想要占用整个屏幕(不是全屏) - 但我也不想将我的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
答案 0 :(得分: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中为窗口设置自动保存名称,您可以在退出并重新启动时自动保存窗口的大小和尺寸。 (我想我忘了在示例代码项目中添加一个)。