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


152

我为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自述文件中建议的方法

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

我尝试覆盖-(id)init和更新那里的图标,但结果相同。

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

所有里面Tweak.xm。问题也发生了iOS7

Answers:


2

自从我使用libstatusbar已经有一段时间了,但是如果您绝对确定LSStatusBarItem没有发布它,则很有可能被Springboard或其他应用程序隐藏了。考虑icon.visible = YES明确设置。您还可能要考虑设置timeHiddenLSStatusBarServer,以NO通过调用来明确[item setHidesTime:NO]

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

参考文献:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.