Je souhaite créer une application osx/cacoa sur mon mac, ce qui fait quelque chose de très simple: afficher une chaîne de texte sur mon mac, sans arrière-plan. En fin de compte, ce sera une minuterie qui s'affichera comme une superposition au-dessus des autres fenêtres, sans être trop intrusive.
J'ai essayé de régler window.backgroundColor = NSColor(red: 1.0, green:0.5, blue:0.5, alpha: 0.5)
(voir l'alpha est 0.5), dans applicationDidFinishLaunching
, mais cela ne le transforme pas en quelque chose de transparent à distance.
Toute bonne âme veut-elle suggérer un moyen de le faire?
NSWindow a une propriété 'opaque' qui est vraie par défaut.
La valeur de cette propriété est true lorsque la fenêtre est opaque; Sinon, false.
Il suffit de le changer en faux:
window.opaque = false
window.backgroundColor = NSColor(red: 1, green: 0.5, blue: 0.5, alpha: 0.5)
Mise à jour de Swift 4: opaque
a été renommé isOpaque
window.isOpaque = false
window.backgroundColor = NSColor(red: 1, green: 0.5, blue: 0.5, alpha: 0.5)
Rendre la fenêtre non opaque et lui donner un fond clair:
func applicationDidFinishLaunching(aNotification: NSNotification) {
window.opaque = false
window.backgroundColor = NSColor.clearColor()
}
Une petite mise à jour pour Swift 3
Un exemple de sous-classe de fenêtre avec commentaire:
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
}
Swift 3/4
self.window?.isOpaque = false
self.window?.hasShadow = false
self.window?.backgroundColor = NSColor.clear
self.window?.titlebarAppearsTransparent = true