0

我在我的 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 也完全按照它应该的方式工作,但在动画方面存在问题。

谢谢。

4

1 回答 1

2

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

于 2013-04-16T15:35:43.720 回答