Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 是否可以将NSStatusItem添加到NSStatusBar中的特定位置?_Objective C_Macos_Position_Nsstatusitem_Nsstatusbar - Fatal编程技术网

Objective c 是否可以将NSStatusItem添加到NSStatusBar中的特定位置?

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 =

我使用self.statusItem=[[NSStatusBar systemStatusBar]statusItemWithLength:NSVariableStatusItemLength]将statusItem添加到OSX上的systemStatusBar。然后,statusItem出现在系统状态栏的最左侧位置。我想知道是否有办法将这样一个项目添加到特定的索引中,例如系统时钟的左侧?

否。苹果没有提供API来选择位置。

有一个专用API来完成此操作:

NSStatusItem *item = [NSStatusBar _statusItemWithLength:NSSquareStatusItemLength  withPriority:INT32_MAX];
这会将状态项一直放在右侧(或者至少,在允许的范围内尽量放在右侧,它仍然在聚光灯的左侧)


显然,作为私有API,您应该将其包装在
responseToSelector
if语句中。

是和否。使用私有API,您可以为添加
NSStatusItem
指定
优先级。我为
NSStatusBar
()开发了一个小类别,它提供了简单的方法:

NSStatusItem *statusItem =
    [systemStatusBar statusItemWithLength:NSVariableStatusItemLength
                               positioned:NSStatusBarItemOrderingModeAfter
                               relativeTo:NSStatusBarItemPriorityNotificationCenter];
你可以到里面去看看。

看看这个