在NSView中:
var area:NSTrackingArea!
override func updateTrackingAreas() {
if area != nil {
self.removeTrackingArea(area)
}
let opt = (
NSTrackingArea.Options.mouseEnteredAndExited.rawValue |
NSTrackingArea.Options.mouseMoved.rawValue |
NSTrackingArea.Options.activeAlways.rawValue
)
area = NSTrackingArea.init(rect: self.bounds, options: NSTrackingArea.Options(rawValue: opt), owner: self, userInfo: nil)
self.addTrackingArea(area)
}
override func mouseEntered(with event: NSEvent) {
self.wantsLayer = true
self.layer?.backgroundColor = NSColor.init(hex: "#F7FBFF").cgColor
}
override func mouseExited(with event: NSEvent) {
self.wantsLayer = true
self.layer?.backgroundColor = NSColor.clear.cgColor
}
deinit {
self.removeTrackingArea(area)
}
在NSViewController中:
var area:NSTrackingArea!
override func viewDidLayout() {
super.viewDidLayout()
if area != nil { self.view.removeTrackingArea(area) }
let opt = (
NSTrackingArea.Options.mouseEnteredAndExited.rawValue |
NSTrackingArea.Options.mouseMoved.rawValue |
NSTrackingArea.Options.activeAlways.rawValue
)
area = NSTrackingArea.init(rect: self.view.bounds, options: NSTrackingArea.Options(rawValue: opt), owner: self, userInfo: nil)
self.view.addTrackingArea(area)
}
override func mouseEntered(with event: NSEvent) {
self.view.wantsLayer = true
self.view.layer?.backgroundColor = NSColor.init(hex: "#F7FBFF").cgColor
}
override func mouseExited(with event: NSEvent) {
self.view.wantsLayer = true
self.view.layer?.backgroundColor = NSColor.clear.cgColor
}
deinit {
self.view.removeTrackingArea(area)
}