之前我已经创建了几个状态菜单(NSStatusBar
)应用程序。但我从来没有在Swift做过。如果将自定义视图设置为菜单项,则底部会显示5点边框。我没想到你能删除的东西。直到今天,我还不知道有关于这个主题的一些文献。一个主题发布here。
无论如何,以下就是我所拥有的。
class AppDelegate: NSObject, NSApplicationDelegate {
var statusItem = NSStatusItem()
var statusImage = NSImage()
func showStatusMenu() {
statusItem = NSStatusBar.system().statusItem(withLength: NSVariableStatusItemLength)
let img = NSImage.init(named: "StatusImage")
statusItem.image = img!.resize(w: 18.0, h: 18.0)
statusItem.menu = statusMenu
let topMenuItem = NSMenuItem(title: "", action: nil, keyEquivalent: "")
let viewRect = NSMakeRect(0, 0, 1, 30)
let menuItemView = TopBackground.init(frame: viewRect)
menuItemView.autoresizingMask = .viewWidthSizable
topMenuItem.view = menuItemView
statusMenu.addItem(topMenuItem)
}
}
class TopBackground: NSView {
override init(frame frameRect: NSRect) {
super.init(frame:frameRect);
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
override func draw(_ rect:NSRect) {
var fullBounds = self.bounds
fullBounds.size.height += 4
NSBezierPath(rect: fullBounds).setClip()
NSColor.blue.set()
NSRectFill(fullBounds)
super.draw(rect)
}
}
无论如何,我无法消除底部的空隙。我做错了什么?
Muchos thankos。