我正在尝试编写一个应用程序,该应用程序使用自定义动画在 UINavigationController 的视图堆栈中的视图控制器之间进行转换。
现在,我正在添加同一个视图的多个后期,只是为了让机制正常运行。
我的视觉目标如下:
1. 创建一个新的“FirstVC”。
2. 将[FirstVC view] 的alpha 值设置为0。
3. 将[FirstVC view] 的transform 值设置为两个方向(垂直和水平)的25%。
在动画块中,我想要完成的是:
1. 将 [OutgoingVC view] 的变换值设置为双向 500%(将其放大 5 倍)。
2.将[OutgoingVC view]的alpha值设置为0(淡出为空)。
3. 将[FirstVC view]的transform值设置为1(恢复到原来的大小)。4. 将[FirstVC view]的alpha值设置为1(淡入为全色)。
这个动画的最终效果应该是“首页”炸开并淡出,而“下一页/底部页面”炸开(仅全屏)并淡入。这个想法是用户从地板上掉下来或某物。“再深入一点。”
我已将动画减慢到 10.0 秒的间隔,以便更好地了解正在发生的事情。
看来“OutgoingVC”(即顶视图)上发生的动画是正确的。然而,底部视图似乎很好(100% 的屏幕尺寸和 alpha=1.0),但它会继续运行,并且似乎会放大到 4x/5x 并且也会淡出到 0 的 alpha。一旦屏幕完全变黑,新的 UIViewController (FirstVC) 正确显示在屏幕上。
有谁知道为什么我的代码不会按照我想要的方式运行?
谢谢!
愚蠢的我!这是代码:
- (IBAction)AddNewScreenPressed:(id)sender
{
FirstVC *newViewController = [[FirstVC alloc] init];
UIView *currentView = [self view];
UIView *newView = [newViewController view];
[newView setTransform:CGAffineTransformMakeScale(0.25, 0.25)];
[newView setAlpha:0];
[UIView transitionWithView:[self view]
duration:10.0
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
[[self view] addSubview:newView];
[currentView setAlpha:0];
[currentView setTransform:CGAffineTransformMakeScale(5.0, 5.0)];
[newView setAlpha:1.0];
[newView setTransform:CGAffineTransformMakeScale(1, 1)];
}
completion:^(BOOL finished){
[[self navigationController] pushViewController:newViewController animated:NO];
}
];
}