我想使用聚焦环动画作为字段中错误数据的指示器。因此,我将“becomeFirstResponder:”发送到字段,并希望焦点环从红色淡出为默认颜色。
我正在努力研究核心动画,但仍然没有找到任何方法来做到这一点。可能吗?
最佳答案
我不确定此策略是否遵循 HIG,通常更常见的做法是显示一个持久图标,指示字段旁边的字段未验证,但获得该字段应该不会太难您正在寻求的效果。
使用简单的 NSAnimation 可能会更容易在这里而不是使用核心动画。 绘制聚焦环的标准代码通常如下所示:
[NSGraphicsContext saveGraphicsState];
NSSetFocusRingStyle(NSFocusRingOnly);
[[NSColor clearColor] set];
[[NSBezierPath bezierPathWithRect:focusRect] fill];
[NSGraphicsContext restoreGraphicsState];
此代码将在控件的自定义子类中的 drawRect: 方法中实现。
为了绘制自定义彩色聚焦环,您需要自己绘制矩形,并且无法从 NSSetFocusRingStyle 函数中受益。颜色将从 NSAnimation 中去除,这也会将控件设置为重新绘制自身。因为您没有使用 Cocoa 的工具来绘制聚焦环,所以您可能还需要插入 View 的内容,以便有空间来绘制聚焦环。
有关 NSAnimations 的更多信息可在 Animation Programming Guide for Cocoa 中找到。
关于 cocoa 对焦环彩色动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1049405/