Пользовательский вид в строке состояния не отображается отключенным на дополнительном экране - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть приложение, которое использует пользовательский вид в строке меню macOS.В macOS есть функция, заключающаяся в том, что элементы на панели меню будут отображаться отключенными на дополнительном экране (я думаю, что альфа-значение будет добавлено к представлению).

Когда я удаляю пользовательское представление из кнопки, все работает нормально,Но когда я использую свой пользовательский вид, вид всегда выглядит одинаково, независимо от того, является ли он основным или дополнительным монитором.

Даже установка свойства «visibleDisabled» не меняет внешний вид вида.

Это код, который я использую:

private let statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
private var view: HostView?

func applicationDidFinishLaunching(_ aNotification: Notification)
{
    self.createMainView()
    self.createMenuBarView()
}

fileprivate func createMenuBarView()
{
    // Remove all sub views from the view and create new ones.
    self.view?.subviews.removeAll()

    var width: CGFloat = 0
    for device in self.controller.model.devices
    {
        if let newView = self.createView(for: device.value, x: width)
        {
            self.view?.addSubview(newView.view)

            width += newView.width
        }
    }

    self.view?.frame = NSRect(x: 0, y: 0, width: width, height: MenuBar.height)

    self.statusItem.image = nil
    self.statusItem.length = width

    if let view = self.view
    {
        // Do I have to set some properties here?
        self.statusItem.button?.addSubview(view)
    }
}

fileprivate func createMainView()
{
    let view = HostView(frame: NSRect(x: 0, y: 0, width: 32.0, height: MenuBar.height))
    view.menu = self.menu

    self.view = view
}

1 Ответ

0 голосов
/ 10 января 2019

Кажется, проблема в том, что я добавляю NSView к кнопке NSStatusItem в качестве подпредставления.

self.statusBarItem.button?.addSubview(myView)

Когда я устанавливаю свой пользовательский вид в Свойство вида NSStatusItem, видна дополнительном экране отображается серым цветом (обратите внимание, что это не рекомендуется для MacOS 10.14).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...