2012-03-20 28 views
38

Voglio aggiungere una vista sotto la mia tavoletta analogica in iOS e quindi mostrarla con animazione proveniente da dietro. Ma quando uso il mio codice, la vista che deve provenire da dietro la mia barra delle schede si sovrappone per un po 'alla mia barra delle linguette.Come aggiungere una vista dietro altra vista in iOS

tab bar and a view that shows when tab bar button pressed

Questo è il mio codice:

- (void)handlePressedButton { 
if (pressedButton.selected) { 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:0.5]; 
    CGAffineTransform transform1 = CGAffineTransformMakeTranslation(-196.0, 0.0); 
    CGAffineTransform transform2 = CGAffineTransformMakeTranslation(0.0, 0.0); 
    [leftPanelView setTransform:transform1]; 
    [movedView setTransform:transform2]; 
    [UIView commitAnimations]; 
    pressedButton.selected = NO; 
} 
else { 
    pressedButton.selected = YES; 
    if (leftPanelView) { 
     [leftPanelView removeFromSuperview]; 
     leftPanelView = nil; 
    } 
    CGRect viewFrame = CGRectMake(-196, 0, 236, 748); 
    leftPanelView = [[UIView alloc] initWithFrame:viewFrame]; 
    leftPanelView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"left-nav-content.png"]]; 

    // Code to populate leftPanelView according to what button is pressed. 
    [self populateLeftPanelView]; 

    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:0.5]; 
    [self.view addSubview:leftPanelView]; 
    CGAffineTransform transform1 = CGAffineTransformMakeTranslation(236.0, 0.0); 
    CGAffineTransform transform2 = CGAffineTransformMakeTranslation(112.0, 0.0); 
    [leftPanelView setTransform:transform1]; 
    [movedView setTransform:transform2]; 
    [UIView commitAnimations]; 
} 

}

Qui il leftPanelView è la vista che deve venire sotto una barra delle schede. La vista spostata è un'altra vista, quella sul pannello di destra a sinistra (non importa)

+0

Verificare se questo funziona: [self.navigationController.view insertSubview: belowSubview: self.navigationController.navigationBar]; –

risposta

42

provare sendSubviewToBack

[self.view sendSubviewToBack:leftPanelView]; 
+0

Accetto la tua risposta, perché l'hai spedita dopo 2 minuti, ho pubblicato. Penso sia giusto. – wzbozon

+6

Questo non risponde alla domanda posta. Tutto ciò che fa è spostare una vista sul retro della catena subview. La risposta che segue da He Shiming è corretta. – Rickster

+0

Grazie per la risposta. Ha funzionato per me. – Ramakrishna

4

Oh, ho trovato una soluzione da solo. Ho aggiunto dopo questo:

[UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:0.5]; 
    [self.view addSubview:leftPanelView]; 

questa linea:

[self.view sendSubviewToBack:leftPanelView]; 
106

Inoltre addSubview, ci sono altri metodi si può contare su per aggiungere la vista:

– insertSubview:aboveSubview: 
– insertSubview:belowSubview: 
– insertSubview:atIndex: 

È possibile controllare l'indice (in realtà z-index o l'ordine dei livelli) della vista utilizzando questi metodi.

+1

Per me 'insertSubview: belowSubview:' risolto il problema! Thx –

+0

Questa dovrebbe essere la risposta giusta. la risposta di cui sopra non risponde a quello che è stato chiesto. – MarkosDarkin

Problemi correlati