cocoa 对焦环彩色动画

标签 cocoa user-interface core-animation

我想使用聚焦环动画作为字段中错误数据的指示器。因此,我将“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/

相关文章:

linux - GUI 中的数百万行

objective-c - 如何绘制一个没有 unicode 表示的 NSGlyph?

macos - 在 Swift 中向 NSWindow 添加多个 subview

c++ - QT5错误: Unknown type name 'QCoreApplication' . Qt5中的第一个程序

core-animation - 将CALayer剪切到任意路径

ios - 动画缓动/iOS 动画与 CSS3 三次贝塞尔曲线

iphone - 如何检查 CABasicAnimation 是否已应用并正在运行?

cocoa - 在 OSX 上显示创建者代码的图标

macos - 在 Cocoa 中安排方法调用的方法?

user-interface - 如何使用构建器功能? - flutter