Я могу вернуть размер экрана, используя:
- (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];
}
visibleFrame
— это не то же самое, чтоframe
;visibleFrame
исключает область, занятую Dock или (когда Dock скрыт) триггерную область show-Dock, а также строку меню. - person Peter Hosey   schedule 13.02.2011for (NSScreen *screen in [NSScreen screens])
. - person Vladimir Prudnikov   schedule 04.04.2013