Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过在iOS中翻转到另一个子视图来设置子视图的动画_Ios_Animation_Subview - Fatal编程技术网

通过在iOS中翻转到另一个子视图来设置子视图的动画

通过在iOS中翻转到另一个子视图来设置子视图的动画,ios,animation,subview,Ios,Animation,Subview,我有一个视图,其中有两个子视图隐藏在屏幕下方。我目前的设置是,当用户单击主视图中的按钮时,它会在顶部设置两个子视图的动画。发生这种情况时,仅显示一个子视图,而另一个子视图在其后面 我试图做的是当两个子视图都出现时,当用户单击子视图中的按钮时,它应该翻转到另一个视图。然而,当我试图做到这一点时,什么也没有发生。下面是我在第一个子视图按钮的TouchUpInside中使用的代码片段: [UIView beginAnimations:nil context:nil]; [UIView setAnima

我有一个视图,其中有两个子视图隐藏在屏幕下方。我目前的设置是,当用户单击主视图中的按钮时,它会在顶部设置两个子视图的动画。发生这种情况时,仅显示一个子视图,而另一个子视图在其后面

我试图做的是当两个子视图都出现时,当用户单击子视图中的按钮时,它应该翻转到另一个视图。然而,当我试图做到这一点时,什么也没有发生。下面是我在第一个子视图按钮的
TouchUpInside
中使用的代码片段:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.StatisticsScreen cache:true];
[UIView commitAnimations];
非常感谢您的建议。

尝试这样做:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.StatisticsScreen cache:true];

[view addSubview:theViewYouWantToAppear];

[UIView commitAnimations];

当然,已经添加了子视图,因此调用
addSubview
的唯一效果就是更改子视图顺序。

我也遇到了类似方法的问题。我所做的是通过编程创建一个
UIView
(称为
panelView
),在其中我添加了我需要翻转的两个视图,然后按下按钮:

[UIView transitionWithView:self.panelView 
                      duration:0.5f 
                       options:UIViewAnimationOptionTransitionFlipFromRight 
                    animations:^{

                        [self.view1 removeFromSuperview];
                        [self.panelView addSubview:self.view2];

                    } completion:nil];

将两个子视图添加到Superview,将一个子视图设置为hidden,然后执行以下代码

    if(!isSelected){
         isSelected = YES;

         [UIView transitionWithView:superview
                      duration:1.0f
                       options:UIViewAnimationOptionTransitionFlipFromRight
                    animations:^{

                        [subview1 setHidden:YES];
                        [subview2 setHidden:NO];

                    } completion:nil];
}else{
    isSelected = NO;
    [UIView transitionWithView:superview
                      duration:1.0f
                       options:UIViewAnimationOptionTransitionFlipFromRight
                    animations:^{

                        [subview1 setHidden:NO];
                        [subview2 setHidden:YES];

                    } completion:nil];
}

这是旧的动画API,您应该使用基于块的API。@kevboh:我使用的是OP使用的。。。为了支持iOS 3,这可能是必需的…您在何时何地创建了panelView并将子视图添加到新创建的视图中?你能用这个例子更新你的答案吗?我只是想弄明白为什么我必须创建一个新视图才能在两个已经存在的视图之间设置动画。你可以在nib中创建它并在其中添加两个视图,也可以通过编程方式创建:UIView*panelView=[[UIView alloc]initWithFrame:someFrame];然后是[panelView addSubview:view1],对于view2也是如此。我之所以这样做,是因为我所有的视图都在一个滚动视图中,翻转动画无法正常工作——它正在滚动视图中翻转其他视图。这样试试吧,我相信它会有用的。这只是让景色消失了。我是否需要将panelView添加到主视图中?是的,否则在这种情况下不会显示任何内容。没有动画,第二个视图显示为偏移。第一个视图在父视图中居中的位置;第二个视图显示在右下角。为什么设置翻转动画比设置卷轴动画困难。