我为按钮创建了一个自定义视图,因为我需要在鼠标结束时实现一些突出显示。该课程非常简单,我已经实施了mouseEntered:
以及mouseExited:
。视图已在init方法中注册以进行跟踪(不确定它是否是最佳位置)。
问题在于绘图。我保留了一个ivar mouseOver
,在鼠标输入时设置为YES
,在鼠标退出时设置为NO
。另一个ivar用于图像,称为image
。在绘图方面,鼠标与否之间的区别在于透明度。这是我的drawRect:
:
- (void)drawRect:(NSRect)dirtyRect
{
[image drawAtPoint:NSMakePoint(0.0,0.0)
fromRect:dirtyRect
operation:NSCompositeCopy
fraction:((mouseOver) ? 1.0 : 0.0)];
}
它很好用,但只有当鼠标第一次进入时才显然。我想问题是在绘制其他图像之前未清除视图。我尝试添加:
[[NSColor clearColor] set];
NSRectFillUsingOperation(dirtyRect, NSCompositeClear);
但没有成功。我该如何解决这个问题?
答案 0 :(得分:0)
[NSColor clearColor]
是纯粹透明的颜色。您可能希望使用具有某种不透明度的颜色进行填充,例如[NSColor whiteColor]
。