画像を含むボーダレス NSButton があり、ButtonEffect クラスでサブクラス化されて、mouseEntered および mouseExited イベントを検出します。私の目標は、マウスがボタン領域に入ったときに画像の端だけが光るようにすることです。2 つの異なる画像 (1 つは影付き、もう 1 つは影なし) を使用してこれを達成できることはわかっていますが、これは 1 つの画像で行う必要があります。
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