Domanda

Quando si effettua una richiesta HTTP asincrona, mi nascondo la barra di stato iPhone e animare nel mio UIViewController personalizzato per mostrare lo stato di upload. Così, invece di vedere la potenza del segnale, portante, il tempo e la durata della batteria, l'utente riceve i messaggi in base sullo stato di avanzamento della richiesta HTTP. La mia barra di stato è esattamente 20px alto, e si adatta bene in cui la barra di stato di una volta. Quando l'attività HTTP è fatto, la visualizzazione personalizzata anima fuori e l'iPhone barra di stato Animates indietro nel.

vorrei solo evitare di nascondere la barra di stato iPhone completamente, e invece portare la mia vista personalizzata sulla parte superiore della barra di stato. Attualmente, se invoco mio punto di vista Animazione personalizzata e mantenere l'iPhone barra di stato impostato su visibile, la mia vista personalizzata è dietro di esso.

Questo è il codice che ho:

-(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];
    }


}

Senza la [[UIApplication sharedApplication] setStatusBarHidden: SI animato: SI] Non si può vedere il mio visualizzazione personalizzata. Come posso ottenere il mio visualizzazione personalizzata ad apparire solo sulla parte superiore della barra di stato in modo da non devo nasconderlo?

Grazie!

È stato utile?

Soluzione

Fai la tua speciale vista la propria UIWindow. Impostare windowLevel del UIWindow a UIWindowLevelStatusBar. Se non è ancora in cima, è possibile utilizzare bringSubviewToFront:. Sulla UIWindow (ricordate, un UIWindow è un UIView) per portarlo alla cima di quel livello

Altri suggerimenti

Risposta qui:

Aggiungi UIView sopra tutte le altre opinioni, anche StatusBar

è necessario creare un'UIWindow e impostarlo della struttura windowLevel per statusBarLevel.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top