我为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
函数调用的。此函数被多次调用,例如从%hook SpringBoard
和-(void)ringerChanged:(int)changed
下的-(void)applicationDidFinishLaunching:(id)application
调用
都在Tweak.xm
内部。这个问题在iOS7
中也会发生。
发布于 2016-06-21 22:22:07
我使用libstatusbar已经有一段时间了,但如果你绝对确定LSStatusBarItem
没有发布,它可能被Springboard或其他应用程序隐藏了。考虑显式设置icon.visible = YES
。您可能还需要考虑通过调用[item setHidesTime:NO]
将LSStatusBarServer
上的timeHidden
显式设置为NO
。
此外,如果您没有对图标进行任何更改,请设置icon.manualUpdate = NO
。
参考文献:
https://stackoverflow.com/questions/14791556
复制相似问题