2016-02-23 10 views
1

Поскольку я новичок в разработке OS X, я не очень хорошо разбираюсь в компонентах OS X. В моем приложении мне нужно охватить весь экран, но я могу это сделать только тогда, когда моя панель меню скрыта. В качестве другого приложения я хочу покрыть весь экран меню. Теперь я представляю View as popover, но мое требование не является pop pop, но охватывает все представления как размытие в IOS. Мой проект в Swift 2.1Экран обложки с панелью меню OS X

То, что я сделал

let presOptions: NSApplicationPresentationOptions = 
        ([ 
        .HideDock, 
        .HideMenuBar , 
        .DisableAppleMenu, 
        .DisableForceQuit, 
        .DisableProcessSwitching, 
        .DisableSessionTermination, 
        .DisableHideApplication, 
        .AutoHideToolbar 
        ]) 
      let optionsDictionary = [NSFullScreenModeApplicationPresentationOptions : 
       NSNumber(unsignedLong: presOptions.rawValue)] 

      self.view.enterFullScreenMode(NSScreen.mainScreen()!, withOptions:optionsDictionary) 
      self.view.wantsLayer = true 
} 

Мое требование

enter image description here

Мой выход

enter image description here

ответ

1

Вы должны создать NSWindow с уровнем NSScreenSaverWindowLevel - 1, по этой ссылке он работает: http://www.cocoabuilder.com/archive/cocoa/33048-floating-window-over-menu-bar.html

+0

я получил ошибку на этой линии, [ theWindowNR setLevel: NSScreenSaverWindowLevel - 1]; – ak2g

+1

Конечно, потому что это код Objective-C, а не Swift. –

+0

Я не могу найти setLevel, что это в быстром? theWindowNR.setLevel = NSScreenSaverWindowLevel - 1 – ak2g

2

решение мне на Swift 2.0

let newWindow = NSWindow(contentRect: NSMakeRect(0, 0, NSScreen.mainScreen()!.frame.width, NSScreen.mainScreen()!.frame.height), styleMask: NSBorderlessWindowMask, backing: NSBackingStoreType.Buffered, `defer`: false) 

func applicationDidFinishLaunching(aNotification: NSNotification) { 

    newWindow.title = "New Window" 
    newWindow.opaque = false 
    newWindow.backgroundColor = NSColor(calibratedHue: 0, saturation: 1.0, brightness: 0, alpha: 0.5) 
    newWindow.makeKeyAndOrderFront(nil) 
    newWindow.level = Int(CGWindowLevelForKey(CGWindowLevelKey.ScreenSaverWindowLevelKey)) 

}