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

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

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

谢谢

4

2 回答 2

0

查看类层次结构以了解您要实现的目标。NSStatusBar 是一个 NSObject,不知道如何渲染。它有一个 NSStatusBarButton,确实如此。没试过,但是类似

UIView.animateWithDuration(0.2, delay:0, options: [.repeat], animations: {
    statusBarItem.button.opacity = 0
}, completion: {
    (value: Bool) in
statusBarItem.button.opacity = 1
})
于 2021-11-15T06:15:42.593 回答
0

根据@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()
            }
        }
    }

这将为循环上的按钮设置动画

于 2021-11-15T18:52:22.540 回答