我想使用聚焦环动画来指示字段中的数据不正确。所以我要发送到成为firstFirstResponder:的字段,并希望聚焦环从红色渐变为默认颜色。

我正在与Core Animation搏斗,但仍然找不到任何方法。可能吗?

最佳答案

我不确定这种策略是否遵循HIG,通常更常见的做法是执行一些操作,例如显示一个永久性图标,指示该字段旁边未验证某个字段,但是要获得您的效果应该不难重新寻求。

在这里使用简单的NSAnimation而不是使用Core Animation可能会更容易。
绘制聚焦环的标准代码通常如下所示:

[NSGraphicsContext saveGraphicsState];
NSSetFocusRingStyle(NSFocusRingOnly);
[[NSColor clearColor] set];
[[NSBezierPath bezierPathWithRect:focusRect] fill];
[NSGraphicsContext restoreGraphicsState];


该代码将在控件的自定义子类的drawRect:方法中实现。

为了绘制自定义的彩色对焦环,您需要自己绘制矩形,并且无法从NSSetFocusRingStyle函数中受益。颜色将从NSAnimation驱除,这还将设置控件以重新绘制自身。因为您没有使用Cocoa的功能来绘制聚焦环,所以您可能还需要插入视图的内容,以便有空间绘制聚焦环。

Animation Programming Guide for Cocoa中提供了有关NSAnimations的更多信息。

10-08 11:57