swift - 替换 NSStatusBarButton NSView 以禁用活力
问题描述
我目前正在尝试减少添加到 Mac OS 中 NSStatusBarItems 图标的默认活力。我知道这可以通过更改allowsVibrancy 属性来实现。但是,由于它在 NSView 上是只读的,因此我需要扩展该类并覆盖 allowVibrancy 方法。
class NoneVibrancyView: NSView
{
override var allowsVibrancy: Bool { return false }
}
目前,我的图标仍然看起来像 allowVibrancy 已激活。我想知道我是否正确替换了我的 NSView。这是我的代码:
let statusBar = NSStatusBar.system
statusBarItem = statusBar.statusItem(withLength: NSStatusItem.squareLength)
let noneVibrancyView = NoneVibrancyView(frame: statusBarItem.button!.frame)
statusBarItem.button?.addSubview(noneVibrancyView)
statusBarItem.button?.title = ""
let statusBarMenu = NSMenu(title: "My Status Menu Bar")
statusBarItem.menu = statusBarMenu
解决方案
子视图的活力将被其父视图的活力覆盖。因此,需要设置作为自定义视图父级的状态栏按钮的活力(由于addSubview()
)。
由于状态项的按钮是自动生成的,因此您可能必须为此使用扩展:
extension NSStatusBarButton {
override open var allowsVibrancy: Bool { return false }
}
推荐阅读
- php - 图像缩放到新宽度并保持质量和纵横比
- java - 从 Modelclass 层次结构的顶层调用 setter
- php - 小数点前 9 位和小数点后 1 到 3 位数字的正则表达式
- automation - 如何通过小袋鼠自动化浏览器回滚数据库中所做的更改
- postgresql - 如何在不嵌套输出的情况下将模型包含在 sequelize 中
- php - 将帖子与用户 ID 一起存储,参考 Laravel 6 中的用户表
- java - swt中的Scrollable和ScrolledComposite有什么区别?
- javascript - JavaScript 颜色数组
- c# - 带计数器的标签
- python - 图像和标签不会出现在 Tkinter 中