NSScreen을 사용하여 MacBook 컴퓨터에 연결된 외부 화면 확인

도미닉 팔로

외부 화면에 창을 표시해야합니다 (예 : 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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

이더넷 케이블을 통해 컴퓨터를 인터넷에 연결하여 WiFi에 연결된 컴퓨터에 연결

분류에서Dev

Windows에서 하나의 이더넷 소켓을 사용하여 두 대의 컴퓨터를 인터넷에 연결하려면 어떻게합니까?

분류에서Dev

Macbook Air의 배터리가 완전히 충전 된 것으로 표시되지만 연결을 해제하면 컴퓨터가 죽습니다.

분류에서Dev

matlab을 사용하여 연결된 문자열을 화면 및 텍스트 파일에 인쇄

분류에서Dev

로컬 계정을 사용하여 내 컴퓨터에서 암호 확인을 비활성화하려면 어떻게합니까?

분류에서Dev

WCF를 사용하여 인터넷을 통해 두 대의 컴퓨터 연결

분류에서Dev

라우터에 연결된 두 컴퓨터간에 파일을 공유하려면 어떻게합니까?

분류에서Dev

세 번째 컴퓨터에서 ping을 수행하여 두 Linux 컴퓨터 간의 연결을 확인할 수 있습니까?

분류에서Dev

컴퓨터에 대한 원격 RDP 연결이 시작될 때 원격 컴퓨터의 잠금 화면을 방지하려면 어떻게해야합니까?

분류에서Dev

휴대폰을 내 PC에 연결하면 컴퓨터의 WiFi 어댑터가 비활성화됩니다.

분류에서Dev

동적 외부 IP를 사용하여 컴퓨터에서 Azure SQL Server에 연결

분류에서Dev

원격 서버에 연결된 프린터를 사용하여 로컬 컴퓨터에서 파일 인쇄

분류에서Dev

Linux에서 차이점을 확인하는 컴퓨터 간 폴더 동기화

분류에서Dev

내 컴퓨터에서 시작되어 현재 활성화 된 RDP 연결을 나열하는 방법

분류에서Dev

SSH에 IP 주소 대신 컴퓨터 이름을 사용하여 컴퓨터에 연결

분류에서Dev

gVim을 사용하여 외부에서 변경된 버퍼를 확인하는 방법은 무엇입니까?

분류에서Dev

crontab을 사용하여 화면 확인

분류에서Dev

컴퓨터를 켰을 때 라우터 연결을 비활성화 한 다음 활성화하지 않으면 인터넷이 작동하지 않습니다.

분류에서Dev

C # 및 Powershell을 사용하여 도메인의 일부가 아닌 컴퓨터에서 Active Directory에 액세스

분류에서Dev

Raspberry Pi에서 내 컴퓨터의 인터넷 연결을 사용하는 방법은 무엇입니까?

분류에서Dev

중첩 된 JSON을 평면화하고 Pandas를 사용하여 데이터 프레임에 연결

분류에서Dev

인터넷에서 컴퓨터 화면을 공유하려면 어떻게해야합니까?

분류에서Dev

인터넷에서 컴퓨터 화면을 공유하려면 어떻게해야합니까?

분류에서Dev

다른 라우터 / 인터넷을 사용하여 다른 위치에있는 컴퓨터를 연결하는 방법은 무엇입니까?

분류에서Dev

컴퓨터 화면에 결함이 발생하여 정상적으로 부팅 할 수 없음

분류에서Dev

WIFI 액세스 포인트가 전송을 중계합니까 아니면 연결된 두 컴퓨터 간의 트랜잭션을 용이하게합니까?

분류에서Dev

두 개의 외부 화면을 노트북에 연결

분류에서Dev

CLI를 사용하여 고정 외부 IP 주소를 Google 클라우드 컴퓨팅 인스턴스에 연결하는 방법

분류에서Dev

외부 모니터를 연결하면 최대화 된 창이 최대화되지 않음

Related 관련 기사

  1. 1

    이더넷 케이블을 통해 컴퓨터를 인터넷에 연결하여 WiFi에 연결된 컴퓨터에 연결

  2. 2

    Windows에서 하나의 이더넷 소켓을 사용하여 두 대의 컴퓨터를 인터넷에 연결하려면 어떻게합니까?

  3. 3

    Macbook Air의 배터리가 완전히 충전 된 것으로 표시되지만 연결을 해제하면 컴퓨터가 죽습니다.

  4. 4

    matlab을 사용하여 연결된 문자열을 화면 및 텍스트 파일에 인쇄

  5. 5

    로컬 계정을 사용하여 내 컴퓨터에서 암호 확인을 비활성화하려면 어떻게합니까?

  6. 6

    WCF를 사용하여 인터넷을 통해 두 대의 컴퓨터 연결

  7. 7

    라우터에 연결된 두 컴퓨터간에 파일을 공유하려면 어떻게합니까?

  8. 8

    세 번째 컴퓨터에서 ping을 수행하여 두 Linux 컴퓨터 간의 연결을 확인할 수 있습니까?

  9. 9

    컴퓨터에 대한 원격 RDP 연결이 시작될 때 원격 컴퓨터의 잠금 화면을 방지하려면 어떻게해야합니까?

  10. 10

    휴대폰을 내 PC에 연결하면 컴퓨터의 WiFi 어댑터가 비활성화됩니다.

  11. 11

    동적 외부 IP를 사용하여 컴퓨터에서 Azure SQL Server에 연결

  12. 12

    원격 서버에 연결된 프린터를 사용하여 로컬 컴퓨터에서 파일 인쇄

  13. 13

    Linux에서 차이점을 확인하는 컴퓨터 간 폴더 동기화

  14. 14

    내 컴퓨터에서 시작되어 현재 활성화 된 RDP 연결을 나열하는 방법

  15. 15

    SSH에 IP 주소 대신 컴퓨터 이름을 사용하여 컴퓨터에 연결

  16. 16

    gVim을 사용하여 외부에서 변경된 버퍼를 확인하는 방법은 무엇입니까?

  17. 17

    crontab을 사용하여 화면 확인

  18. 18

    컴퓨터를 켰을 때 라우터 연결을 비활성화 한 다음 활성화하지 않으면 인터넷이 작동하지 않습니다.

  19. 19

    C # 및 Powershell을 사용하여 도메인의 일부가 아닌 컴퓨터에서 Active Directory에 액세스

  20. 20

    Raspberry Pi에서 내 컴퓨터의 인터넷 연결을 사용하는 방법은 무엇입니까?

  21. 21

    중첩 된 JSON을 평면화하고 Pandas를 사용하여 데이터 프레임에 연결

  22. 22

    인터넷에서 컴퓨터 화면을 공유하려면 어떻게해야합니까?

  23. 23

    인터넷에서 컴퓨터 화면을 공유하려면 어떻게해야합니까?

  24. 24

    다른 라우터 / 인터넷을 사용하여 다른 위치에있는 컴퓨터를 연결하는 방법은 무엇입니까?

  25. 25

    컴퓨터 화면에 결함이 발생하여 정상적으로 부팅 할 수 없음

  26. 26

    WIFI 액세스 포인트가 전송을 중계합니까 아니면 연결된 두 컴퓨터 간의 트랜잭션을 용이하게합니까?

  27. 27

    두 개의 외부 화면을 노트북에 연결

  28. 28

    CLI를 사용하여 고정 외부 IP 주소를 Google 클라우드 컴퓨팅 인스턴스에 연결하는 방법

  29. 29

    외부 모니터를 연결하면 최대화 된 창이 최대화되지 않음

뜨겁다태그

보관