主视图下的半隐藏视图显示在alpha segue中

时间:2013-01-22 15:58:51

标签: ios objective-c cocoa-touch cocoa ios5

[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;}]; 

并且通过“减慢”隐藏的视图,但显然视图是在延迟中加载的,并且在隐藏视图的可见部分看起来不那么优雅。

由于

1 个答案:

答案 0 :(得分:1)

您可以先在动画之前隐藏部分隐藏的视图,或者设置另一个动画(将同时运行)将隐藏视图的alpha设置为0.以与主视图相同或更快的速度运行此动画动画。