我在翻转iOS应用程序中的两个子视图时遇到困难。它的设置方式是我在界面文件中创建了一个视图。视图加载后,视图1应该出现在该视图中(通过使用addSubview实现)。当在View1上按下一个按钮时,它应该翻转以显示view2。

从StackOverflow中的各种问题中,我实现了以下代码:

-(void)LetUsFlip
{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1.0];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:_containerView cache:YES];

    if ([self.view1 superview])
   {
        NSLog(@"Show View 2");
        [view1 removeFromSuperview];
        [_containerView addSubview:view2];
        [_containerView sendSubviewToBack:view1];
   }
   else
   {
        NSLog(@"Show View 1");
        [view2 removeFromSuperview];
        [_containerView addSubview:view1];
        [_containerView sendSubviewToBack:view2];
   }

   [UIView commitAnimations];
}


当我运行此代码时,第一个翻转动画效果很好,即在按下按钮时显示“视图2”。但是,当我再次按“视图2”中的按钮时,就会发生动画,并且不会显示“视图1”-显示空白屏幕。
View1和View2上的两个按钮分别调用上述方法。 NSLog也完全按照应有的方式工作,但是动画存在问题。

谢谢。

最佳答案

在第二个转换期间,view1不是nil吗?它存储在一个弱属性中,这意味着当您从超级视图中删除它时,它可能会被释放。尝试将属性声明更改为strong,看看是否有帮助。

关于iphone - 在容器 View 中翻转 subview ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16040957/

10-14 20:27