[macOS] 라이언 스타일 풀스크린 지원

풀스크린에 대한 글을 써 보려 했는데 사실 쓸 내용이 없다. 이제 모든 앱 프로젝트는 기본적으로 라이언 스타일 풀스크린이 기본 옵션이다.

... ?!! 응? 뭐? 끝이야?!

물론 이 글을 뜬금없이 끝낼 순 없으니 한가지 팁을 소개해 본다.

만약 윈도우가 툴바를 가지고 있다면, 그리고 풀스크린 환경에서 툴바를 숨기고 싶은 경우가 있을 수 있다. 예를 들어, 사파리는 풀스크린을 표시하면 메뉴바만 사라지는데, 사진(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 값을 뒤져봐서 여러 용도를 확인해 볼 순 있겠지만 별로 크게 볼건 없는 것 같다. ;-)

댓글

이 블로그의 인기 게시물

버전(Version)을 제대로 이해하기

소수점 제거 함수 삼총사 ceil(), floor(), round()