NSStatusItem Button Title to the Right of the Image

試著忘記壹切 提交于 2020-11-29 08:34:11

问题


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:

Example

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!