У меня есть приложение, которое использует пользовательский вид в строке меню 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
}