외부 화면에 창을 표시해야합니다 (예 : Macbook에 연결된 모니터). 그러나 내부 MacBook 화면과 외부 화면을 구별하는 방법을 모르겠습니다. NSScreen.screens()
모든 화면 의 반환 목록을 호출 하고 색인 0이있는 화면은 연결된 외부 화면이고 색인 1이있는 화면은 내부 (내장) MacBook 화면입니다. 그러나 문서는 다음과 같이 말합니다.
반환 된 배열의 인덱스 0에있는 화면은 사용자 시스템의 기본 화면에 해당합니다.
그렇다면 연결된 화면이 기본으로 표시되는 이유는 무엇입니까? 모든 시스템의 외부 화면이 기본으로 표시되어 있습니까? => 외부 화면이 연결된 모든 시스템에서이 화면이 0 위치에 있다고 가정 할 수 있습니까?
또한 OS X 도크는 내부 화면에서만 볼 수 있으며 도크는 기본적으로 기본 화면에서 볼 수 있다고 생각했지만 사실이 아닙니다.
올바른 외부 화면을 신뢰할 수있는 방법이 있습니까?
wasdiver의 답변을 확장하기 위해 다음과 같은 구현이 있습니다.
extension NSScreen {
class func externalScreens() -> [NSScreen] {
guard let screens = NSScreen.screens else { return [] }
let description: NSDeviceDescriptionKey = NSDeviceDescriptionKey(rawValue: "NSScreenNumber")
return screens.filter {
guard let deviceID = $0.deviceDescription[description] as? NSNumber else { return false }
return CGDisplayIsBuiltin(deviceID.uint32Value) == 0
}
}
}
사용법은 간단합니다.
let externalScreens = NSScreen.externalScreens()
필요에 따라 guard
명령문 else
블록 의 동작을 조정할 수 있습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다