Search code examples
swiftmacoscocoa

How can I create a window with transparent background with swift on osx?


I want to create an osx/cocoa application on my mac, which does something very simple: Display a text string on my mac, with no background. Ultimately this will be a timer which displays as an overlay on top of other windows, without being too intrusive.

I tried setting window.backgroundColor = NSColor(red: 1.0, green:0.5, blue:0.5, alpha: 0.5) (see the alpha is 0.5), in applicationDidFinishLaunching but this doesn't turn it into something remotely transparent.

Any good soul wants to suggest a way to do this?


Solution

  • NSWindow has a property 'opaque' which it is true by default.

    The value of this property is true when the window is opaque; otherwise, false.

    Just change it to false:

    override func viewWillAppear() {
        super.viewWillAppear()
        view.window?.opaque = false
        view.window?.backgroundColor = NSColor(red: 1, green: 0.5, blue: 0.5, alpha: 0.5)
    }
    

    Swift 4 update: opaque has been renamed isOpaque

    override func viewWillAppear() {
        super.viewWillAppear()
        view.window?.isOpaque = false
        view.window?.backgroundColor = NSColor(red: 1, green: 0.5, blue: 0.5, alpha: 0.5) 
    }