第三方应用程序启动时LibStatusBar图标消失
我为Cydia写了一个调整,它为状态栏添加了一个图标。 它在主屏幕上工作正常,当SpringBoard启动时,如果一个应用程序已经启动,那么它工作正常,但是,如果一个应用程序(如Facebook或Twitter)closures(完全),并显示图标,何时启动应用程序,它会导致图标消失。 该图标使用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)applicationDidFinishLaunching:(id)application
%hook SpringBoard
和-(void)ringerChanged:(int)changed
所有内部Tweak.xm
。 这个问题也发生在iOS7
中。
我已经使用libstatusbar已经有一段时间了,但是如果您确定LSStatusBarItem
没有被释放,那么它可能被Springboard或其他应用程序隐藏了。 考虑明确设置icon.visible = YES
。 您也可以考虑通过调用[item setHidesTime:NO]
来将timeHidden
上的LSStatusBarServer
设置为NO
。
另外,如果您不对图标进行任何更改,请设置icon.manualUpdate = NO
。
参考文献:
- iPhoneDevWiki上的Libstatusbar
- LSStatusBarItem.mm源文件