使用NSScreen获取内部macbook屏幕

Tyi*_*ilo 5 screen objective-c

如果我的MacBook连接了外接显示器,我该如何检索MacBook屏幕?

任何一个屏幕都可以是带有菜单栏和底座的屏幕.它们也可以具有相同的分辨率,相同的名称等.

是否可以确定它而不要求用户拔掉除MacBook屏幕以外的所有屏幕?

Tyi*_*ilo 9

您可以使用CGDisplayIsBuiltin()以查明显示器是否内置.

示例代码:

int i = 0;
for(NSScreen* screen in [NSScreen screens]) {
    NSDictionary* screenDictionary = [screen deviceDescription];
    NSNumber* screenID = [screenDictionary objectForKey:@"NSScreenNumber"];
    CGDirectDisplayID aID = [screenID unsignedIntValue];     
    NSLog(@"Screen number %i is%@ builtin", i, CGDisplayIsBuiltin(aID)? @"": @" not");
    i++;
}
Run Code Online (Sandbox Code Playgroud)