NSMenuItem - 删除自定义视图下方的底部间隙

时间:2016-11-15 00:53:14

标签: swift cocoa swift3 nsmenuitem

之前我已经创建了几个状态菜单(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)
    }
}

enter image description here enter image description here

无论如何,我无法消除底部的空隙。我做错了什么?

Muchos thankos。

0 个答案:

没有答案