다른 앱의 전체 화면에 창 표시
4555 단어 MacOSXmacosSwiftfullscreen
결론부터 쓰면 아래의 3개가 적절하게 설정되어 있으면 표시할 수 있습니다.
환경:
* macOS10.14.6
* Xcode10.1
let rect = NSRect(x: 100, y: 100, width: 300, height: 200)
let styleMask: NSWindow.StyleMask = [.titled, .nonactivatingPanel]
let window = NSPanel(contentRect: rect, styleMask: styleMask, backing: .buffered, defer: true)
window.collectionBehavior = [.canJoinAllSpaces, .fullScreenAuxiliary]
window.makeKeyAndOrderFront(nil)
NSPanel
NSWindow의 서브 클래스로서 정의되고 있습니다.
iOS에서는 들을 수 없는 클래스명입니다만 macOS에서는 옛날부터 있어, 용도는 메인 윈도우에 부속시키는 서브 패널과 같은 표시에 이용합니다.
지금은 드물게 사용하지 않지만.
let window = NSPanel(contentRect: rect, styleMask: styleMask, backing: .buffered, defer: true)
NSWindow와 마찬가지로 초기화하여 사용합니다. Storyboard에서 생성해도 OK입니다.
NSWindow.StyleMask
윈도우의 표시 스타일입니다.
let styleMask: NSWindow.StyleMask = [.titled, .nonactivatingPanel]
.nonactivatingPanel
이것이 필요합니다.앱을 활성화하지 않는 액세서리 패널처럼 동작하여 다른 앱의 전체 화면 공간에 표시할 수 있습니다.
NSWindow.CollectionBehavior
창의 동작을 지정할 수 있습니다.
window.collectionBehavior = [.canJoinAllSpaces, .fullScreenAuxiliary]
.canJoinAllSpaces
모든 공간에 표시할 수 있습니다. 메뉴 바 등이이 스타일입니다..fullScreenAuxiliary
전체 화면 창과 같은 공간에 표시할 수 있습니다.결과
Safari의 전체 화면 창에 표시.
Reference
이 문제에 관하여(다른 앱의 전체 화면에 창 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/a_jike/items/7eb5240b5ecb9a0c4fd7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)