Question

Lorsque vous effectuez une requête HTTP asynchrone, je cache l'état de l'iPhone bar et Animer dans mon propre UIViewController personnalisé pour afficher l'état de téléchargement. Ainsi, au lieu de voir la force du signal, le transporteur, le temps et la vie de la batterie, l'utilisateur reçoit des messages en fonction de la progression de la requête HTTP. Ma barre d'état est exactement 20px élevé, et se intègre bien où la barre d'état était. Lorsque l'activité HTTP est fait, la vue personnalisée anime et sur l'état de l'iPhone bar dans l'animez retour.

Je voudrais juste éviter de masquer la barre d'état de l'iPhone complètement, et mettre à la place de mon affichage personnalisé au-dessus de la barre d'état. À l'heure actuelle, si j'invoque mon point de vue personnalisée animation et de garder l'état de l'iPhone bar ensemble à visible, mon point de vue personnalisé est derrière elle.

Voici le code que j'ai:

-(void) animateStatusBarIn {
        CGRect statusFrame = CGRectMake(0.0f, -20.0f, 320.0f, 20.0f);
        UploadStatusBar *statusView = [[UploadStatusBar alloc] initWithNibName:@"UploadStatusBar" bundle:nil];
    self.status = statusView;
    [statusView release];
    status.view.frame = statusFrame;
    [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
    [window addSubview:status.view];
    [UIView beginAnimations:@"slideDown" context:nil];
    [UIView setAnimationDuration:0.3];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(animationFinished:)];
    status.view.frame = CGRectMake(0.0f, 0.0f, 320.0f, 20.0f);
    [UIView commitAnimations];

}   

-(void) animateStatusBarOut {
    [UIView beginAnimations:@"slideUp" context:nil];
    [UIView setAnimationDuration:0.3];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(animationFinished:)];
    status.view.frame = CGRectMake(0.0f, -20.0f, 320.0f, 20.0f);
    [UIView commitAnimations];
}

-(void)animationFinished:(NSString *)name {
    if ([name isEqualToString:@"slideDown"]) {

    }
    if ([name isEqualToString:@"slideUp"]) {
            [[UIApplication sharedApplication]setStatusBarHidden:NO animated:YES];
        [status.view removeFromSuperview];
    }


}

Sans la [[UIApplication sharedApplication] setStatusBarHidden: OUI animée: OUI] vous ne pouvez pas voir mon point de vue personnalisé. Comment puis-je obtenir mon point de vue personnalisé à apparaître juste au-dessus de la barre d'état, donc je n'ai pas de le cacher?

Merci!

Était-ce utile?

La solution

Faites votre propre point de vue particulier son UIWindow. Set windowLevel à UIWindowLevelStatusBar du UIWindow. Si elle est toujours pas sur le dessus, vous pouvez utiliser bringSubviewToFront. Sur le UIWindow (rappelez-vous, un UIWindow est un UIView) pour l'amener au sommet de ce niveau

Autres conseils

Réponse ici:

Ajouter UIView Au-dessus Tous les autres vues, y compris StatusBar

doivent créer un UIWindow et le mettre à la propriété de windowLevel statusBarLevel.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top