Используя AppKit, вы можете добавить NSMenuItem
s к NSMenu
. Я видел, что в SwiftUI есть что-то похожее на NSMenu, а именно MenuButton
. Но я не могу найти документацию о том, как это работает.
Я попробовал следующее:
MenuButton("+") {
Button("New contact") { print("Create new contact") }
Button("New group") { print("Create new group") }
}
И это дает мне
![an opened MenuButton](https://i.stack.imgur.com/rN8sv.png)
Выглядит почти нормально , но
- Кнопки имеют цвет фона, отличный от меню (обратите внимание на чуть более светлый цвет над и под элементами меню) .
- При наведении курсора на пункты меню их цвет фона не меняется, как в обычном меню MacOS. См. Изображение ниже:
![Highlighted menu item](https://i.stack.imgur.com/Ljsyw.png)
Я также пытался изменить цвет фона вручную с помощью модификатора .background()
, но это не влияет полная ширина пункта меню.
MenuButton("+") {
Button("New contact") { print("Create new contact") }
.background(Color.accentColor)
Button("New group") { print("Create new group") }
}
![Menu with manually changed background](https://i.stack.imgur.com/Nc78W.png)
Я полагаю, это потому, что я помещаю Button
s внутри MenuButton
, в то время как вероятно, он ожидает какой-то другой элемент SwiftUI. Какие элементы я должен поместить в MenuButtons, чтобы создать нормально выглядящее меню macOS, подобное приведенному ниже?
![enter image description here](https://i.stack.imgur.com/AaoxV.png)