Objective c 是否可以将NSStatusItem添加到NSStatusBar中的特定位置?
我使用self.statusItem=[[NSStatusBar systemStatusBar]statusItemWithLength:NSVariableStatusItemLength]将statusItem添加到OSX上的systemStatusBar。然后,statusItem出现在系统状态栏的最左侧位置。我想知道是否有办法将这样一个项目添加到特定的索引中,例如系统时钟的左侧?否。苹果没有提供API来选择位置。有一个专用API来完成此操作:Objective c 是否可以将NSStatusItem添加到NSStatusBar中的特定位置?,objective-c,macos,position,nsstatusitem,nsstatusbar,Objective C,Macos,Position,Nsstatusitem,Nsstatusbar,我使用self.statusItem=[[NSStatusBar systemStatusBar]statusItemWithLength:NSVariableStatusItemLength]将statusItem添加到OSX上的systemStatusBar。然后,statusItem出现在系统状态栏的最左侧位置。我想知道是否有办法将这样一个项目添加到特定的索引中,例如系统时钟的左侧?否。苹果没有提供API来选择位置。有一个专用API来完成此操作: NSStatusItem *item =
NSStatusItem *item = [NSStatusBar _statusItemWithLength:NSSquareStatusItemLength withPriority:INT32_MAX];
这会将状态项一直放在右侧(或者至少,在允许的范围内尽量放在右侧,它仍然在聚光灯的左侧)
显然,作为私有API,您应该将其包装在
responseToSelector
if语句中。是和否。使用私有API,您可以为添加NSStatusItem
指定优先级。我为NSStatusBar
()开发了一个小类别,它提供了简单的方法:
NSStatusItem *statusItem =
[systemStatusBar statusItemWithLength:NSVariableStatusItemLength
positioned:NSStatusBarItemOrderingModeAfter
relativeTo:NSStatusBarItemPriorityNotificationCenter];
你可以到里面去看看。看看这个