Подтвердить что ты не робот

Как создать окно с прозрачным фоном с быстрой настройкой osx?

Я хочу создать приложение osx/ cocoa на моем mac, что делает что-то очень просто: отобразите текстовую строку на моем mac, без фона. В конечном итоге это будет таймер, который отображается как наложение поверх других окон, не будучи слишком навязчивым.

Я попытался установить window.backgroundColor = NSColor(red: 1.0, green:0.5, blue:0.5, alpha: 0.5) (см. альфа 0.5), в applicationDidFinishLaunching, но это не превратит его в что-то отдаленно прозрачное.

Любая хорошая душа хочет предложить способ сделать это?

4b9b3361

Ответ 1

NSWindow имеет свойство opaque, которое по умолчанию имеет значение true.

Значение этого свойства равно true, когда окно непрозрачно; иначе ложно.

Просто измените его на 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) 
}

Ответ 2

Сделайте окно непрозрачным и дайте ему четкий фон:

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

Ответ 3

Небольшое обновление для 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




    }

Ответ 4

Свифт 3/4

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