我在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。但是当我再次按下View 2中的按钮时,动画就会出现,而View 1显示为不 - 给出一个空白屏幕。 View1和View2上的按钮分别调用上述方法。 NSLog也可以按照它应该的方式工作,但是我遇到动画问题。
感谢。
答案 0 :(得分:2)
第二次转换期间,view1
是nil
以外的其他内容吗?它存储在一个弱属性中,这意味着当你从超级视图中删除它时它可以被释放。尝试将属性声明更改为strong
,看看是否有帮助。