web-dev-qa-db-ja.com

osxでSwift)を使用して背景が透明なウィンドウを作成するにはどうすればよいですか?

Macでosx/cocoaアプリケーションを作成したいのですが、これは非常に簡単なことです。背景なしでMacにテキスト文字列を表示します。最終的に、これは他のウィンドウの上にオーバーレイとして表示されるタイマーであり、煩わしすぎることはありません。

applicationDidFinishLaunchingwindow.backgroundColor = NSColor(red: 1.0, green:0.5, blue:0.5, alpha: 0.5)(アルファが0.5を参照)を設定しようとしましたが、これではリモートで透過的なものにはなりません。

良い魂はこれを行う方法を提案したいですか?

15
sagism

NSWindowには、デフォルトでtrueであるプロパティ 'opaque'があります。

このプロパティの値は、ウィンドウが不透明な場合にtrueになります。それ以外の場合はfalse。

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アップデート:opaqueの名前が変更されました 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) 
}
10
Leo Dabus

ウィンドウを不透明にせず、背景を明確にします。

func applicationDidFinishLaunching(aNotification: NSNotification) {
    window.opaque = false
    window.backgroundColor = NSColor.clearColor()
}
12
Paul Patterson

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




    }
3
Akelian

スウィフト3/4

self.window?.isOpaque = false
self.window?.hasShadow = false
self.window?.backgroundColor = NSColor.clear
self.window?.titlebarAppearsTransparent = true
2
Jay Mehta