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

后端 未结 4 735
难免孤独
难免孤独 2020-12-06 04:59

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 w

相关标签:
4条回答
  • 2020-12-06 05:40

    Make the window non-opaque, and give it a clear background:

    func applicationDidFinishLaunching(aNotification: NSNotification) {
        window.opaque = false
        window.backgroundColor = NSColor.clearColor()
    }
    
    0 讨论(0)
  • 2020-12-06 05:49

    A little update for Swift 3

    A window subclass example with comment:

    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
    
    
    
    
        }
    
    • More on Title Bar appereance here Title Bar and Toolbar Showcase
    0 讨论(0)
  • 2020-12-06 05:50

    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) 
    }
    
    0 讨论(0)
  • 2020-12-06 05:58

    Swift 3/4

    self.window?.isOpaque = false
    self.window?.hasShadow = false
    self.window?.backgroundColor = NSColor.clear
    self.window?.titlebarAppearsTransparent = true
    
    0 讨论(0)
提交回复
热议问题