【发布时间】:2011-02-13 05:40:41
【问题描述】:
我可以使用以下方法返回屏幕尺寸:
- (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 触发区域以及菜单栏。 -
您的代码可能要简单得多。首先
for (NSScreen *screen in [NSScreen screens]). -
有没有办法在实际测量中获得屏幕尺寸?也就是说,以厘米还是英寸为单位?
-
您需要将像素转换为您想要的任何内容。应该很容易。只需使用上面的方法获取像素,然后进行隐蔽。
标签: cocoa macos screen resolution