Macでosx/cocoaアプリケーションを作成したいのですが、これは非常に簡単なことです。背景なしでMacにテキスト文字列を表示します。最終的に、これは他のウィンドウの上にオーバーレイとして表示されるタイマーであり、煩わしすぎることはありません。
applicationDidFinishLaunching
でwindow.backgroundColor = NSColor(red: 1.0, green:0.5, blue:0.5, alpha: 0.5)
(アルファが0.5を参照)を設定しようとしましたが、これではリモートで透過的なものにはなりません。
良い魂はこれを行う方法を提案したいですか?
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)
}
ウィンドウを不透明にせず、背景を明確にします。
func applicationDidFinishLaunching(aNotification: NSNotification) {
window.opaque = false
window.backgroundColor = NSColor.clearColor()
}
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/4
self.window?.isOpaque = false
self.window?.hasShadow = false
self.window?.backgroundColor = NSColor.clear
self.window?.titlebarAppearsTransparent = true