以编程方式在Mac OS X中获取屏幕大小

Wri*_*sCS 31 macos cocoa resolution screen

我可以使用以下命令返回屏幕尺寸:

- (void) getScreenResolution {

    NSArray *screenArray = [NSScreen screens];
    NSScreen *mainScreen = [NSScreen mainScreen];
    unsigned screenCount = [screenArray count];
    unsigned index  = 0;

    for (index; index < screenCount; index++)
    {
      NSScreen *screen = [screenArray objectAtIndex: index];
      NSRect screenRect = [screen visibleFrame];
      NSString *mString = ((mainScreen == screen) ? @"Main" : @"not-main");

      NSLog(@"Screen #%d (%@) Frame: %@", index, mString, NSStringFromRect(screenRect));
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

屏幕#0(主要)框架:{{0,4},{1344,814}}

有没有一种方法格式化{1344, 814}1344x814


编辑:

这非常有效:

- (NSString*) screenResolution {

    NSRect screenRect;
    NSArray *screenArray = [NSScreen screens];
    unsigned screenCount = [screenArray count];
    unsigned index  = 0;

    for (index; index < screenCount; index++)
    {
        NSScreen *screen = [screenArray objectAtIndex: index];
        screenRect = [screen visibleFrame];
    }

    return [NSString stringWithFormat:@"%.1fx%.1f",screenRect.size.width, screenRect.size.height];
}
Run Code Online (Sandbox Code Playgroud)

mam*_*ady 19

在Mac OS中查找屏幕大小非常简单:

NSRect e = [[NSScreen mainScreen] frame];
H = (int)e.size.height;
W = (int)e.size.width;
Run Code Online (Sandbox Code Playgroud)


j.s*_*com 15

在Swift 4.0中,您可以获得主屏幕的屏幕大小:

if let screen = NSScreen.main {
    let rect = screen.frame
    let height = rect.size.height
    let width = rect.size.width
}
Run Code Online (Sandbox Code Playgroud)

如果您使用特定的现有窗口查找屏幕大小,您可以使用:

var window: NSWindow = ... //The Window laying on the desired screen
var screen = window.screen!
var rect = screen.frame
var height = rect.size.height
var width = rect.size.width
Run Code Online (Sandbox Code Playgroud)


GWW*_*GWW 12

NSLog(@"%fx%f",screenRect.size.width, screenRect.size.height);

  • 很好,`返回[NSString stringWithFormat:@"%.0fx%.0f",screenRect.size.width,screenRect.size.height];`完美地返回**1024x768**,谢谢. (2认同)

小智 7

对于那些正在寻找获得屏幕分辨率的人:

如果您正在编写基于窗口的应用程序,则只需从_window.screen.frame.size获取分辨率即可


Leo*_*bus 6

编辑/更新

斯威夫特4

NSScreen.main?.frame         // {x 0 y 0 w 1,920 h 1,200}
NSScreen.main?.frame.width   // 1,920.0
NSScreen.main?.frame.height  // 1,200.0 
Run Code Online (Sandbox Code Playgroud)

斯威夫特3.x

NSScreen.main()?.frame         // {x 0 y 0 w 1,920 h 1,200}
NSScreen.main()?.frame.width   // 1,920.0
NSScreen.main()?.frame.height  // 1,200.0 
Run Code Online (Sandbox Code Playgroud)

斯威夫特2.x

NSScreen.mainScreen()?.frame         // {x 0 y 0 w 1,920 h 1,200}
NSScreen.mainScreen()?.frame.width   // 1,920.0
NSScreen.mainScreen()?.frame.height  // 1,200.0
Run Code Online (Sandbox Code Playgroud)