152 votes

L'icône de la barre d'état de la bibliothèque disparaît au lancement d'une application tierce.

J'ai écrit un tweak pour Cydia, il ajoute une icône à la barre d'état. Il fonctionne bien sur l'écran d'accueil et lorsque SpringBoard est lancé, également, si une application est déjà lancée alors il fonctionne bien, Cependant, si une application (telle que Facebook ou Twitter) est fermée (complètement) et que l'icône est affichée, lors du lancement de l'application, l'icône disparaît. L'icône est affichée en utilisant libStatusBar en utilisant ce code :

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"];

J'ai également essayé d'utiliser les méthodes suggérées dans libStatusBar Fichier README

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

J'ai essayé de remplacer -(id)init et en mettant à jour l'icône à cet endroit, mais le résultat est le même.

Le code présenté ci-dessus est appelé à partir d'un static void Cette fonction est appelée plusieurs fois, par exemple à partir de la fonction -(void)applicationDidFinishLaunching:(id)application sous %hook SpringBoard y -(void)ringerChanged:(int)changed

Tout à l'intérieur Tweak.xm . Le problème se produit dans iOS7 également.

2voto

JAL Points 3432

Cela fait un moment que je n'ai pas utilisé libstatusbar, mais si vous êtes absolument sûr que l'option LSStatusBarItem n'est pas publié, il est possible qu'il soit caché par Springboard ou une autre application. Envisagez de définir icon.visible = YES explicitement. Vous pouvez également envisager de définir timeHidden en LSStatusBarServer a NO explicitement en appelant [item setHidesTime:NO] .

En outre, si vous n'apportez aucune modification à l'icône, définissez le paramètre icon.manualUpdate = NO .

Références :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X