Подтвердить что ты не робот

Программно получить размер экрана в Mac OS X

Я могу вернуть размер экрана, используя:

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

Вывод:

Экран № 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];
}
4b9b3361

Ответ 1

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

Ответ 2

Поиск размера экрана в Mac OS очень прост:

NSRect e = [[NSScreen mainScreen] frame];
H = (int)e.size.height;
W = (int)e.size.width;

Ответ 3

В Swift 4.0 вы можете получить размер экрана на главном экране:

if let scrn: NSScreen = NSScreen.main {
    let rect: NSRect = scrn.frame
    let height = rect.size.height
    let width = rect.size.width
}

Если вы ищете размер экрана с определенным существующим окном, вы можете получить его с помощью:

var myWin: NSWindow = (The Window you want to look for the screen, it is laying on) 
var scrn: NSScreen = myWin.screen!
var rect: NSRect = scrn.frame
var height = rect.size.height
var width = rect.size.width

Ответ 4

Для тех парней, которые ищут способ получить разрешение экрана:

Если вы программируете приложение на основе окон, вы можете просто получить разрешение от _window.screen.frame.size

Ответ 5

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

Ответ 6

Решение Swift 3:

NSScreen.main()!.frame