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

4

1 回答 1

2

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

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

参考:

于 2016-06-21T14:22:07.093 回答