[sourceViewController.view addSubview:destinationController.view];
[destinationController.view setFrame:sourceViewController.view.window.frame];
[destinationController.view setTransform:CGAffineTransformMakeScale(0.5,0.5)];
[destinationController.view setAlpha:0.0];
[UIView animateWithDuration:0.3
delay:0.0
options:UIViewAnimationCurveEaseOut
animations:^{
[destinationController.view setTransform:CGAffineTransformMakeScale(1.0,1.0)];
[destinationController.view setAlpha:1.0];
//[sourceViewController.view setAlpha:0];
}
completion:^(BOOL finished){
[destinationController.view removeFromSuperview];
[sourceViewController.navigationController pushViewController:destinationController animated:NO];
}];
我的destinationController 有2 个视图,一个接一个。视图#1 是主视图,完全可见,而视图#2 是半可见半隐藏的。当我使用上面的代码并在 segues 之间移动时,我可以看到(从 alpa 0 到 1 时)隐藏的视图完全在主视图下。所以用户可以看到隐藏在下面的东西。(即使我animateWithDuration
做得很快)。我不知道为什么会发生这种情况并试图找到一个创造性的解决方案。我想出的一个解决方案是在ViewController
[UIView animateWithDuration:0.7 animations:^() {_image.alpha = 1;}];
并且通过“减慢”隐藏视图,但显然视图是延迟加载的,并且在隐藏视图的可见部分看起来并不那么优雅。
谢谢