问题
I want an NSStatusItem
’s button’s title to appear to the right of its image. Here’s an example, this is the OS X VPN menubar app:
If I set either the title or image for my NSStatusItem
’s button, they render correctly. However if I set both, they get superimposed and are horizontally center-aligned.
Is there a way to achieve the side-by-side placement without creating a custom UIView
?
回答1:
This has to do with a change in Yosemite, which deprecated setTitle:
and setImage:
on NSStatusItem
. The documentation isn't super-helpful for what to do instead, however.
I’ve found that you have to set the title and the image on the button
property of the NSStatusItem
. That’s how I was getting the behaviour described above, with the title and the image centred over each other.
The solution is simple but not immediately apparent. NSStatusBarItem responds to the setImagePosition:
method of NSButton
. Here’s the code that fixed my issue:
self.statusItem.button.image = [NSImage imageNamed:@"StatusBarIcon"];
self.statusItem.button.imagePosition = NSImageLeft;
Having done this, setting self.statusItem.button.title
positions the items correctly.
回答2:
based on http://tinkker.io/swift/2015/11/10/nsstatusitem.html, in Swift it looks like button.imagePosition = NSCellImagePosition.ImageLeft
does it
回答3:
use
button.imagePosition = NSControl.ImagePosition.imageLeft
来源:https://stackoverflow.com/questions/31250311/nsstatusitem-button-title-to-the-right-of-the-image