完全可定制的 macOS 下拉菜单。它包含 30 个你可以随意使用的设置。
由于这是一个 Swift Package,安装过程非常直接。
更新你的 Package.swift
依赖项
dependencies: [
.package(url: "https://github.com/iSapozhnik/Menu", from: "1.10.1")
]
File -> Swift Packages -> Add Package Dependency
。https://github.com/iSapozhnik/Menu
并点击 Next
Finish
public protocol Configuration {
var titleBottomSpace: CGFloat { get }
var titleFont: NSFont? { get }
var titleColor: NSColor { get }
var backgroundColor: NSColor { get }
var cornerRadius: CGFloat { get }
var hasShadow: Bool { get }
var appearsBelowSender: Bool { get }
var presentingOffset: CGFloat { get }
var animationDuration: TimeInterval { get }
var contentEdgeInsets: NSEdgeInsets { get }
var maximumContentHeight: CGFloat? { get }
var separatorColor: NSColor { get }
var separatorThickness: CGFloat { get }
var separatorHorizontalPadding: Padding.Horizontal { get }
var separatorVerticlaPadding: Padding.Vertical { get }
var rememberSelection: Bool { get }
var textAlignment: Alignment { get }
var iconAlignment: Alignment { get }
var menuItemFont: NSFont? { get }
var menuItemHeight: CGFloat { get }
var menuItemHoverBackgroundColor: NSColor { get }
var menuItemTextColor: NSColor { get }
var menuItemHoverTextColor: NSColor { get }
var menuItemCheckmarkColor: NSColor { get }
var menuItemHoverCheckmarkColor: NSColor { get }
var menuItemCheckmarkHeight: CGFloat { get }
var menuItemCheckmarkThikness: CGFloat { get }
var menuItemHorizontalSpacing: CGFloat { get }
var menuItemImageHeight: CGFloat? { get }
var menuItemImageTintColor: NSColor? { get }
var menuItemHoverImageTintColor: NSColor? { get }
var menuItemHoverAnimationDuration: TimeInterval { get }
}
import Cocoa
import Menu
class ViewController: NSViewController {
private let myMenu = Menu(with: "Select a search engine:")
@IBOutlet var showMenuButton: NSButton!
override func viewDidLoad() {
super.viewDidLoad()
let bing = MenuItem("Bing search", image: Icn.bing.image, action: { [weak self] in
self?.showMenuButton.title = "Bing"
})
let item = MenuItem("DuckDuckGo search", image: Icn.duck.image, action: { [weak self] in
self?.showMenuButton.title = "DuckDuckGo"
})
let google = MenuItem("Google search", image: Icn.google.image, action: { [weak self] in
self?.showMenuButton.title = "Google"
})
let longText = MenuItem("Some very-very-very long text with no icon", action: { [weak self] in
self?.showMenuButton.title = "Some very long text"
})
let emojiItem = MenuItem("Emojis are here 😎🚀", action: { [weak self] in
self?.showMenuButton.title = "Emojis are here 😎🚀"
})
let exit = MenuItem("Exit", image: Icn.exit.image, action: {
NSApplication.shared.terminate(nil)
})
let separator = MenuItem.separator()
let menuItems = [
bing,
item,
google,
separator,
longText,
emojiItem,
separator,
exit
]
myMenu.addItems(menuItems)
}
@IBAction func didClickButton(_ sender: NSButton) {
myMenu.show(from: sender)
}
}
在本节中,我收集了一些使用 Menu 控件可以实现的示例。左侧是一些来自 Dribbble 的随机示例,右侧是我的实现。
Dribbble | 菜单 | 代码 |
---|---|---|
链接 | ||
![]() |
![]() |
|
链接 | ||
![]() |
![]() |
代码 |
由 @iSapozhnik 创建并维护。
根据 MIT 许可证发布。 有关详细信息,请参见 LICENSE
。
Copyright © 2020-present Sapozhnik Ivan.