Par programmation obtenir la taille de l'écran sous Mac OS X

je suis en mesure de retourner la taille de l'écran à l'aide de:

- (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));
    }
}

Sortie:

Écran No 0 (Principal) Cadre: {{0, 4}, {1344, 814}}

Est-il un moyen de formater {1344, 814}1344x814<!--8?


Edit:

Cela fonctionne parfaitement:

- (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];
}
26
demandé sur WrightsCS 2011-02-13 08:40:41

6 réponses

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

11
répondu GWW 2011-02-13 05:49:49

trouver la taille de l'écran dans Mac OS est très simple:

NSRect e = [[NSScreen mainScreen] frame];
H = (int)e.size.height;
W = (int)e.size.width;
14
répondu mamady 2013-05-19 12:09:57

Dans Swift 4.0, vous pouvez obtenir la taille de l'écran de l'écran principal:

if let screen = NSScreen.main {
    let rect = screen.frame
    let height = rect.size.height
    let width = rect.size.width
}

Si vous cherchez la taille de l'écran avec une fenêtre existante, vous pouvez l'obtenir avec:

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
14
répondu j.s.com 2018-01-22 13:17:35

Pour ces gars qui sont à la recherche d'un moyen d'obtenir la résolution de l'écran:

si vous programmez une application basée sur une fenêtre, vous pouvez simplement obtenir la résolution de _window.écran.cadre.taille

6
répondu Jashengmato 2013-04-11 05:27:47
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
2
répondu Leo Dabus 2015-01-09 17:51:30

Solution Swift 3:

NSScreen.main()!.frame

0
répondu Aron Gates 2017-05-30 22:28:48