2012-05-16 4 views
0

Я хочу движение с переворотом в моем подзоне. В следующем методе изменить свой подвид, но без покадровой анимации ....Флип-анимация в суб-UIView не найден

int tag=g.view.tag; 
    UIViewController* vc2 = [controlersOfTableBoxes objectAtIndex:tag-1]; 

    UIView* viewOfSelf = self.view; 
    UIViewController* v = [[UIViewController alloc] init]; 

    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:1.0]; 
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:v.view cache:NO]; 

    int maxGraphs = [[viewOfSelf subviews] count]; 

    for (int i = 0; i < maxGraphs; i++) 
    { 
     if([[[viewOfSelf subviews] objectAtIndex:i] isKindOfClass:[UIView class]]) 
     { 
      UIView* v = [[viewOfSelf subviews] objectAtIndex:i]; 
      if(v.tag==tag) 
      { 
       [[[viewOfSelf subviews] objectAtIndex:i] removeFromSuperview]; 
       break; 
      } 
     } 
    } 
    [viewOfSelf addSubview:vc2.view]; 
    v.view = viewOfSelf; 

    [UIView commitAnimations]; 

Если я изменить эти строки:

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:v.view cache:NO]; 

для

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:NO]; 

движение всего экрана но я хочу только в subview в subviewcontroller.

Я стараюсь этого метода:

[UIView animateWithDuration:0.5f delay:0.0f options:UIViewAnimationTransitionFlipFromRight animations:^(void) 
    { 
     int tag=g.view.tag; 
     UIViewController* vc2 = [controlersOfTableBoxes objectAtIndex:tag-1]; 

     UIView* viewOfSelf = self.view; 
     UIViewController* v = [[UIViewController alloc] init]; 
     int maxGraphs = [[viewOfSelf subviews] count]; 

     for (int i = 0; i < maxGraphs; i++) 
     { 
      if([[[viewOfSelf subviews] objectAtIndex:i] isKindOfClass:[UIView class]]) 
      { 
       UIView* view = [[viewOfSelf subviews] objectAtIndex:i]; 
       if(view.tag==tag) 
       { 
        v.view=view; 
        [[[viewOfSelf subviews] objectAtIndex:i] removeFromSuperview]; 
        break; 
       } 
      } 
     } 
     [viewOfSelf addSubview:vc2.view]; 
     v.view = viewOfSelf; 
    } 
    completion:^(BOOL finished) 
    {}]; 

, но результат тот же ...

ответ

0

вы можете использовать

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:5]; 
[UIView transitionFromView:view2 toView:view1 duration:3 options:UIViewAnimationOptionTransitionFlipFromBottom completion:NULL]; 
[UIView commitAnimations]; 

попробовать я

nt tag=g.view.tag; 
UIViewController* v = [controlersOfBoxes objectAtIndex:tag-1]; 
UIViewController* vc2 = [controlersOfTableBoxes objectAtIndex:tag-1]; 
[UIView transitionWithView:vc2.view duration:0.5 options:UIViewAnimationOptionTransitionFlipFromLeft animations:^ { [v.view removeFromSuperview]; [self.view addSubview:vc2.view]; } completion:nil]; 
+0

Это решение такое же, как мое .. . Не двигаться только подвид, если движение все экран – Davidin073

+0

вы используете UIViewAnimationTransitionFlipFromRight не UIViewAnimationOptionTransitionFlipFromRight –

+0

такое же использование UIViewAnimationTransitionFlipFromRight или UIViewAnimationOptionTransitionFlipFromRight или UIViewAnimationOptionTransitionFlipFromBottom ... результат тот же только изменение типа анимации. – Davidin073

 Смежные вопросы

  • Нет связанных вопросов^_^