[macOS] 라이언 스타일 풀스크린 지원
풀스크린에 대한 글을 써 보려 했는데 사실 쓸 내용이 없다. 이제 모든 앱 프로젝트는 기본적으로 라이언 스타일 풀스크린이 기본 옵션이다.
... ?!! 응? 뭐? 끝이야?!
물론 이 글을 뜬금없이 끝낼 순 없으니 한가지 팁을 소개해 본다.
만약 윈도우가 툴바를 가지고 있다면, 그리고 풀스크린 환경에서 툴바를 숨기고 싶은 경우가 있을 수 있다. 예를 들어, 사파리는 풀스크린을 표시하면 메뉴바만 사라지는데, 사진(Photos)앱은 뷰어 모드에서는 툴바가 메뉴바와 동일하게 표시되지 않다가 마우스 커서를 상단에 가져가야 나타난다.
이런 구현(풀스크린 시 툴바 숨기기)을 하기 위해서 여러 방법이 있는 것으로 보이는데, 개인적으로 사용하는 방법은 NSWindowDelegate를 활용하는 방법이다.
아래는 커스텀 NSWindow 서브클래스를 하나 만들고 여기다 구현을 한 예제이다. (Swift 3)
필요하다면 NSApplicationPresentationOptions 값을 뒤져봐서 여러 용도를 확인해 볼 순 있겠지만 별로 크게 볼건 없는 것 같다. ;-)
... ?!! 응? 뭐? 끝이야?!
물론 이 글을 뜬금없이 끝낼 순 없으니 한가지 팁을 소개해 본다.
만약 윈도우가 툴바를 가지고 있다면, 그리고 풀스크린 환경에서 툴바를 숨기고 싶은 경우가 있을 수 있다. 예를 들어, 사파리는 풀스크린을 표시하면 메뉴바만 사라지는데, 사진(Photos)앱은 뷰어 모드에서는 툴바가 메뉴바와 동일하게 표시되지 않다가 마우스 커서를 상단에 가져가야 나타난다.
이런 구현(풀스크린 시 툴바 숨기기)을 하기 위해서 여러 방법이 있는 것으로 보이는데, 개인적으로 사용하는 방법은 NSWindowDelegate를 활용하는 방법이다.
아래는 커스텀 NSWindow 서브클래스를 하나 만들고 여기다 구현을 한 예제이다. (Swift 3)
class MainWindow: NSWindow, NSWindowDelegate { override init(contentRect: NSRect, styleMask aStyle: NSWindowStyleMask, backing bufferingType: NSBackingStoreType, defer flag: Bool) { super.init(contentRect: contentRect, styleMask: aStyle, backing: bufferingType, defer: flag) ... self.delegate = self } ... // MARK: - NSWindowDelegate func window(_ window: NSWindow, willUseFullScreenPresentationOptions proposedOptions: NSApplicationPresentationOptions = []) -> NSApplicationPresentationOptions { return [.autoHideMenuBar, .autoHideToolbar, .fullScreen] } }위 코드에서 window:willUseFullScreenPresentationOptions 구현이 이런 옵션을 전달하기 위한 메소드이다. 여기서 autoHideToolbar 라는 값이 눈에 띄인다면 이 글의 내용은 다 이해한 셈이다. 즉, 툴바는 기본적으로 표시되지 않으며 상단에 마우스 커서를 가져가면 메뉴와 함께 동시에 툴바도 같이 나타난다.
필요하다면 NSApplicationPresentationOptions 값을 뒤져봐서 여러 용도를 확인해 볼 순 있겠지만 별로 크게 볼건 없는 것 같다. ;-)
댓글