Swift-如何在菜单栏中设置NSImage的动画(不透明度0和1之间的脉冲)



我是Swift的新手,似乎找不到任何资源来实现我想要实现的目标。我发现的大部分内容只适用于观点。

我有一个statusBarItem:

statusBarItem = NSStatusBar.system.statusItem(withLength: CGFloat(NSStatusItem.variableLength))

其图标为NSImage

let img = NSImage(named: "(appModel.selectedImage.rawValue)")
img?.size = CGSize(width: 22, height: 22)
statusBarItem.button?.image = img

我想通过使图标脉冲/淡入淡出/动画不透明度来设置图标的动画。

实现这一目标的最佳方式是什么?

谢谢

查看您试图实现的类层次结构。NSStatusBar是一个NSObject,不知道如何渲染。它有一个NSStatusBarButton,它确实有。还没试过,但有点像

UIView.animateWithDuration(0.2, delay:0, options: [.repeat], animations: {
statusBarItem.button.opacity = 0
}, completion: {
(value: Bool) in
statusBarItem.button.opacity = 1
})

根据@Walt的回答,我可以计算出macOS的等价物:

func animateMenubarIcon() {
NSAnimationContext.runAnimationGroup { context in
context.duration = 1
self.statusBarItem?.button?.animator().alphaValue = 0
} completionHandler: {
NSAnimationContext.runAnimationGroup { context in
context.duration = 1
self.statusBarItem?.button?.animator().alphaValue = 1
} completionHandler: {
self.animateMenubarIcon()
}
}
}

这将在循环上动画化按钮

相关内容

最新更新