2013-04-25 17 views
6

Se si crea una nuova visione unica app e inserire questo codice dietro un pulsante:Come aggiungere sottoview con l'animazione flip?

UIView *blah = [[UIView alloc] initWithFrame:CGRectMake(0,0,100,100)]; 
blah.backgroundColor = [UIColor grayColor]; 
[UIView transitionWithView:blah duration:1 
        options:UIViewAnimationOptionTransitionFlipFromRight 
       animations:^{ 
        [self.view addSubview:blah]; 
       } 
       completion:^(BOOL finished){ 

       }]; 

La visualizzazione secondaria viene aggiunto immediatamente senza animazione. Se aggiungi la sottoview prima, prova ad animarla ... ottieni lo stesso problema.

UIView *blah = [[UIView alloc] initWithFrame:CGRectMake(0,0,100,100)]; 
    [self.view addSubview:blah]; 
    [UIView transitionWithView:blah duration:1 
         options:UIViewAnimationOptionTransitionFlipFromRight 
        animations:^{ 
         blah.backgroundColor = [UIColor grayColor]; 
        } 
        completion:^(BOOL finished){ 

        }]; 

Come diavolo si anima un flip per una visualizzazione secondaria, mentre o subito dopo l'aggiunta di esso?

+0

cosa succede quando si utilizza la visualizzazione contenitore invece di bla [UIView transitionWithView: containerView ...] – guenis

+0

se uso self.view come vista di transizione, capovolge l'intero schermo e quando viene eseguito viene mostrata la mia sottoview. Voglio solo capovolgere la sottoview quando vado a mostrarlo. –

risposta

12

È in genere bisogno di avere il contenitore che vincola l'animazione essere a posto già:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    CGRect frame = CGRectMake(0, 0, 100, 100); 

    _container = [[UIView alloc] initWithFrame:frame]; 
    _container.backgroundColor = [UIColor lightGrayColor]; 
    [self.view addSubview:_container]; 
} 

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 

    UIView *subview = [[UIView alloc] initWithFrame:_container.bounds]; 
    subview.backgroundColor = [UIColor darkGrayColor]; 

    [UIView transitionWithView:_container 
         duration:1.0 
         options:UIViewAnimationOptionTransitionFlipFromRight 
        animations:^{ 
         [_container addSubview:subview]; 
        } 
        completion:NULL]; 
} 
+1

Sì, quello ha funzionato. Creare un contenitore sottoview pre-caricato funziona alla grande! Grazie, Rob! –

+0

Puoi aggiungere Container ed effettuare la transizione in un callback? –

1

Questa è la pena di provare:

UIView *blah = [[UIView alloc] initWithFrame:CGRectMake(0,0,100,100)]; 
blah.backgroundColor = [UIColor grayColor]; 
[self.view addSubview:blah]; 
blah.alpha = 0.0; //Or with blah.hidden = TRUE and then FALSE inside the animation block 
[UIView transitionWithView:blah 
        duration:1 
        options:UIViewAnimationOptionTransitionFlipFromRight 
       animations:^{ 
        blah.alpha = 1.0; 
       } 
       completion:^(BOOL finished){ 

       }]; 
+0

lol, ci avevo provato anche io ma non c'è flip, tuttavia la sottoview si fa sbiadire. Ho davvero bisogno di quella vibrazione. ; ( –

+0

Grazie mille guai alfa ancora facendo la magia .. :) – Abo3atef