У меня есть NSButton без полей, который содержит изображение и является подклассом моего класса ButtonEffect для обнаружения событий mouseEntered и mouseExited. Моя цель состоит в том, чтобы только край изображения светился, когда мышь входит в область кнопки. Я знаю, что могу добиться этого, используя два разных изображения (одно с тенью и другое без), но мне нужно сделать это с одним изображением.
Вот пример того, чего я надеюсь добиться для события mouseEntered:
А вот что должно получиться после того, как курсор покинет область кнопки:
Вот моя попытка установить фон ячейки, но он меняет цвет всей области кнопки.
#import "ButtonEffect.h"
@interface ButtonEffect ()
@property NSTrackingArea *trackingArea;
@end
@implementation ButtonEffect
- (void)updateTrackingAreas {
[super updateTrackingAreas];
if (_trackingArea) {
[self removeTrackingArea:_trackingArea];
}
NSTrackingAreaOptions options = NSTrackingInVisibleRect | NSTrackingMouseEnteredAndExited | NSTrackingActiveInKeyWindow;
_trackingArea = [[NSTrackingArea alloc] initWithRect:NSZeroRect options:options owner:self userInfo:nil];
[self addTrackingArea:_trackingArea];
}
- (void)mouseEntered:(NSEvent *)event {
[[NSCursor pointingHandCursor] set];
[self.cell setBackgroundColor:NSColor.redColor];
NSLog(@"mouse entered button");
}
- (void)mouseExited:(NSEvent *)event {
[[NSCursor arrowCursor] set];
[self.cell setBackgroundColor:nil];
NSLog(@"mouse exited button");
}
@end