图像右侧的 NSStatusItem 按钮标题

NSStatusItem Button Title to the Right of the Image

我希望 NSStatusItem 按钮的标题显示在其图像的右侧。这是一个示例,这是 OS X VPN 菜单栏应用程序:

如果我为 NSStatusItem 的按钮设置标题或图像,它们会正确呈现。但是,如果我设置 both,它们会叠加并水平 center-aligned。

有没有办法在不创建自定义 UIView 的情况下实现 side-by-side 展示位置?

这与 Yosemite 中的一项更改有关,它弃用了 NSStatusItem 上的 setTitle:setImage:。但是,该文档并未 super-helpful 说明该怎么做。

我发现您必须在 NSStatusItembutton 属性 上设置标题和图像。这就是我如何获得上述行为,标题和图像彼此居中。

解决方案很简单,但不是很明显。 NSStatusBarItem 响应NSButtonsetImagePosition: 方法。这是解决我的问题的代码:

self.statusItem.button.image = [NSImage imageNamed:@"StatusBarIcon"];
self.statusItem.button.imagePosition = NSImageLeft;

完成此操作后,设置 self.statusItem.button.title 正确定位项目。

基于 http://tinkker.io/swift/2015/11/10/nsstatusitem.html,在 Swift 中看起来 button.imagePosition = NSCellImagePosition.ImageLeft 做到了

使用

button.imagePosition = NSControl.ImagePosition.imageLeft