web-dev-qa-db-ja.com

プログラムで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];
}
31
WrightsCS

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

12
GWW

Mac OSで画面サイズを見つけるのは非常に簡単です。

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

Swift 4.0では、メイン画面の画面サイズを取得できます。

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

特定の既存のウィンドウで画面のサイズを探す場合は、次のようにして取得できます。

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
j.s.com

画面の解像度を取得する方法を探している人のために:

ウィンドウベースのアプリをプログラミングしている場合は、_window.screen.frame.sizeから解像度を取得できます

7
Jashengmato

編集/更新

Swift 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 

Swift 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 

Swift 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
6
Leo Dabus

Swift 3ソリューション:

NSScreen.main()!.frame

1
Aron Gates