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

时间:2013-02-09 21:01:21

标签: ios ios7 jailbreak cydia 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自述文件

中建议的方法
[[UIApplication sharedApplication] addStatusBarImageNamed:@"ON_Mute"]; // and removeStatusBarImageNamed:...

我尝试覆盖-(id)init并在那里更新图标,但效果相同。

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

全部在Tweak.xm内。 问题也发生在iOS7中。

1 个答案:

答案 0 :(得分:2)

自从我使用libstatusbar已经有一段时间了,但是如果你绝对确定LSStatusBarItem没有被释放,它可能会被Springboard或其他应用程序隐藏。考虑明确设置icon.visible = YES。您还可以考虑通过调用timeHidden明确地将LSStatusBarServer NO设置为[item setHidesTime:NO]

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

参考文献: