【发布时间】:2015-09-23 20:43:14
【问题描述】:
我希望NSStatusItem 按钮的标题出现在其图像的右侧。这是一个示例,这是 OS X VPN 菜单栏应用:
如果我为 NSStatusItem 的按钮设置标题或图像,它们会正确呈现。但是,如果我设置 both,它们会重叠并水平居中对齐。
有没有办法在不创建自定义UIView 的情况下实现并排放置?
【问题讨论】:
标签: objective-c xcode macos cocoa nsstatusitem
我希望NSStatusItem 按钮的标题出现在其图像的右侧。这是一个示例,这是 OS X VPN 菜单栏应用:
如果我为 NSStatusItem 的按钮设置标题或图像,它们会正确呈现。但是,如果我设置 both,它们会重叠并水平居中对齐。
有没有办法在不创建自定义UIView 的情况下实现并排放置?
【问题讨论】:
标签: objective-c xcode macos cocoa nsstatusitem
使用
button.imagePosition = NSControl.ImagePosition.imageLeft
【讨论】:
基于 http://tinkker.io/swift/2015/11/10/nsstatusitem.html,在 Swift 中看起来像 button.imagePosition = NSCellImagePosition.ImageLeft 做到了
【讨论】:
这与 Yosemite 的变化有关,在 NSStatusItem 上弃用了 setTitle: 和 setImage:。然而,该文档对于如何做并不是很有帮助。
我发现您必须在NSStatusItem 的button 属性上设置标题和图像。这就是我得到上述行为的方式,标题和图像彼此居中。
解决方案很简单,但不是很明显。 NSStatusBarItem 响应NSButton 的setImagePosition: 方法。这是解决我的问题的代码:
self.statusItem.button.image = [NSImage imageNamed:@"StatusBarIcon"];
self.statusItem.button.imagePosition = NSImageLeft;
完成此操作后,设置 self.statusItem.button.title 可以正确定位项目。
【讨论】:
self.statusItem.button.imagePosition = NSImageLeft 时,我得到'使用未解析的标识符'NSImageLeft''
NSCellImagePosition 列出的值,但developer.apple.com/library/mac/documentation/Cocoa/Reference/… 也没有骰子