2015-12-30 2 views
7

Я хочу создать приложение osx/cocoa на моем mac, которое делает что-то очень просто: отобразите текстовую строку на моем mac, без фона. В конечном счете это будет таймер, который отображается как оверлей поверх других окон, не будучи слишком навязчивым.Как создать окно с прозрачным фоном с быстрым на osx?

Я попытался установить window.backgroundColor = NSColor(red: 1.0, green:0.5, blue:0.5, alpha: 0.5) (см. Альфа 0,5), в applicationDidFinishLaunching, но это не превращает его в нечто прозрачно прозрачное.

Любая хорошая душа хочет предложить способ сделать это?

+0

https://github.com/lukakerr/NSWindowStyles –

ответ

3

NSWindow имеет свойство opaque, которое по умолчанию является истинным.

Значение этого свойства истинно, когда окно непрозрачно; в противном случае, false.

Просто измените его ложь:

window.opaque = false 
10

Сделайте окно непрозрачной, и дать ему четкий фон:

func applicationDidFinishLaunching(aNotification: NSNotification) { 
    window.opaque = false 
    window.backgroundColor = NSColor.clearColor() 
} 
+0

Спасибо большое, что сделал трюк. – sagism

+0

@sagism Почему этот ответ отмечен как правильный, если он был опубликован более чем на 3 часа позже моего? –

+0

@LeoDabus: просто установить «непрозрачность» окна в false недостаточно, чтобы получить эффект sagism после (я попробовал); вам также необходимо изменить цвет фона. –

2

Немного обновление для Swift 3

Пример подкласса окна с комментариями:

class customWindow: NSWindow { 

    override init(contentRect: NSRect, styleMask style: NSWindowStyleMask, backing bufferingType: NSBackingStoreType, defer flag: Bool) { 
     super.init(contentRect: contentRect, styleMask: style, backing: bufferingType, defer: flag) 

     // Set the opaque value off,remove shadows and fill the window with clear (transparent) 
     self.isOpaque = false 
     self.hasShadow = false 
     self.backgroundColor = NSColor.clear 

     // Change the title bar appereance 
     self.title = "My Custom Title" 
     //self.titleVisibility = .hidden 
     self.titlebarAppearsTransparent = true 




    } 
0

Swift 3

self.window?.isOpaque = false 
self.window?.hasShadow = false 
self.window?.backgroundColor = NSColor.clear 
self.window?.titlebarAppearsTransparent = true 
Смежные вопросы