我在翻转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/