LibStatusBar 图标在第三方应用程序启动时消失

我为 Cydia 写了一个调整,它在状态栏中添加了一个图标。 它在主屏上运行良好,当 SpringBoard 启动时,如果一个应用程序已经启动,那么它运行良好, 然而,如果一个应用程序(如 Facebook 或 Twitter)关闭(完全)并且图标显示,当启动该应用程序时,它将导致图标消失。 图标使用 libStatusBar 显示,代码如下:

if(icon) // if icon needs to be removed
{
[icon release];
icon = nil;
}


...


// add the icon to the status bar
icon = [[%c(LSStatusBarItem) alloc] initWithIdentifier:[NSString stringWithFormat:@"muteIconLablabla"] alignment:StatusBarAlignmentRight];
icon.imageName = [NSString stringWithFormat:@"Mute"];

我还尝试使用 libStatusBar README 文件中建议的方法

[[UIApplication sharedApplication] addStatusBarImageNamed:@"ON_Mute"]; // and removeStatusBarImageNamed:...

我尝试覆盖 -(id)init并更新那里的图标,但结果是一样的。

上面显示的代码是从 static void函数调用的。这个函数被调用了几次,例如来自 < code >-(void) applicationDidFinishLaunching: (id) application 在 %hook SpringBoard-(void)ringerChanged:(int)changed

都在 Tweak.xm里面。 这个问题在 iOS7中也会发生。

2794 次浏览

我已经有一段时间没有使用 libstatusbar 了,但是如果你确定 LSStatusBarItem没有被发布,那么它可能被 Springboard 或者其他应用程序隐藏了。考虑显式设置 icon.visible = YES。您还可以考虑通过调用 [item setHidesTime:NO]显式地将 LSStatusBarServer上的 timeHidden设置为 NO

此外,如果不对图标进行任何更改,请设置 icon.manualUpdate = NO

参考文献: