2013-04-25 17 views
6

Jeśli tworzysz nowy widok pojedynczego app i umieścić ten kod za pomocą przycisku:Jak dodać subview z animacją klapki?

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){ 

       }]; 

subview dodaje natychmiast bez animacji. Jeśli najpierw dodasz podgląd, a następnie spróbuj go ożywić ... pojawi się ten sam problem.

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){ 

        }]; 

Jak na Ziemi animujesz klapkę do wyeksportowania podczas lub zaraz po dodaniu?

+0

co się dzieje podczas korzystania z widoku kontenera zamiast bla [UIView transitionWithView: containerView ...] – guenis

+0

jeśli używam self.view jako widoku przejścia, to odwraca cały ekran, a kiedy to zrobi mój podgląd jest wyświetlany. Chcę po prostu przełączyć widok podzespołu, kiedy go wyświetlam. –

Odpowiedz

12

Zazwyczaj trzeba mieć pojemnik, który nakłada ograniczenie animację być na miejscu już:

- (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

Tak, to działało. Samo zrobienie wstępnie załadowanego kontenera subview działa świetnie! Dzięki, Rob! –

+0

Czy możesz dodać kontener i dokonać przejścia w jednym oddzwonieniu? –

1

to warto spróbować:

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, próbowałem tego również, ale nie ma odwrotu, jednak subview nie znika. Naprawdę potrzebuję tego flipa. ; ( –

+0

Bardzo dziękuję guenis alpha nadal tworząc magię .. :) – Abo3atef