未找到子UIView中的翻转动画

时间:2012-05-16 09:34:14

标签: objective-c ios5 uiview flip modal-view

我想在子视图中翻转动作。 在下一个方法中更改我的子视图,但没有翻转动画......

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

运动在所有屏幕中,但我只想在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) 
     {}];

但结果是一样的......

1 个答案:

答案 0 :(得分: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];