Сделав Cocoa NSWindow полупрозрачным, скрываются элементы раскадровки - PullRequest
0 голосов
/ 26 мая 2020

В моем делегате приложения я делаю свое окно полупрозрачным с помощью следующего кода:

func applicationDidFinishLaunching(_ aNotification: Notification) {
            let visualEffect = NSVisualEffectView()
    visualEffect.translatesAutoresizingMaskIntoConstraints = false
    visualEffect.material = .dark
    visualEffect.state = .active
    visualEffect.wantsLayer = true
    visualEffect.layer?.cornerRadius = 16.0


    NSApplication.shared.mainWindow?.titleVisibility = .hidden
    NSApplication.shared.mainWindow?.styleMask.remove(.titled)
    NSApplication.shared.mainWindow?.backgroundColor = .clear
    NSApplication.shared.mainWindow?.isMovableByWindowBackground = true

    NSApplication.shared.mainWindow?.contentView?.addSubview(visualEffect)

    guard let constraints = NSApplication.shared.mainWindow?.contentView else {
      return
    }

    visualEffect.leadingAnchor.constraint(equalTo: constraints.leadingAnchor).isActive = true
    visualEffect.trailingAnchor.constraint(equalTo: constraints.trailingAnchor).isActive = true
    visualEffect.topAnchor.constraint(equalTo: constraints.topAnchor).isActive = true
    visualEffect.bottomAnchor.constraint(equalTo: constraints.bottomAnchor).isActive = true
}

Проблема в том, что каждый элемент в раскадровке больше не виден. Как я могу это исправить? Спасибо

1 Ответ

0 голосов
/ 26 мая 2020

Вам нужно добавить весь свой пользовательский интерфейс в NSVisualEffectView в качестве подпредставлений или переместить NSVisualEffectView на задний план иерархии представлений:

NSApplication.shared.mainWindow?.contentView?.addSubview(visualEffect, positioned: .below, relativeTo: nil)

Обновление: я создал новый проект macOS в Xcode и добавил метку на вид. Затем я вставил ваш код, и единственное, что я изменил, - это строка кода выше. Работает.

enter image description here

...