我在任何地方都找不到这个。所以,如果你有关于它的信息,请给我一个链接。
我有一个视图控制器,我为一个简单的游戏制作了一个菜单。上面有一些按钮。我有另一个视图控制器,也有一些按钮。
问题是:“在我选择一个触发自定义segue(没有任何动画)到另一个视图控制器的按钮后,我如何才能制作这个按钮的动画(隐藏屏幕),它将运行它的按钮动画(来到屏幕边框)?”
我做了这样的:
1)理论:我为菜单按钮制作了一个IBAction,然后在这个IBAction中我调用了一个动画方法,它调用了一个performSegueMethod:。之后在新的 VC 中的 viewWillAppear 方法中调用一个动画方法(即来自源 VC 的几乎相等的方法)。所有这些都有效,但这看起来并不顺利。当目标 VC 替换源 VC 时,会出现此动画的问题。有一些瞬间,当一切看起来都是静止的,并且只有在这个动画开始之后。我不知道如何消除这个目标 VC 滞后。可能我必须在 segue 之前加载目标视图?我试图这样做,但可能是做错了什么,或者它只是不帮助我。
2) 练习:
第一视图控制器.m:
- (IBAction)newGameSegueButton {
[self menuSlideInDirection:@"CenterToLeft" performingSegueWithIdentifier:@"mode"];
}
-(void)menuSlideInDirection:(NSString *)direction performingSegueWithIdentifier:(NSString *)segueIdentifier
{
[UIView animateWithDuration:0.4 animations:^{
CGPoint newGameButtonCenter;
newGameButtonCenter.x = directionIndex * 160;
newGameButtonCenter.y = self.gameButtonSlide.center.y;
self.gameButtonSlide.center = newGameButtonCenter;
[UIView animateWithDuration:0.3 delay:0.1 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
//some animation too
} completion:nil];
[UIView animateWithDuration:0.2 delay:0.2 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
//animation
} completion:nil];
[UIView animateWithDuration:0.1 delay:0.3 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
//some animation too
} completion:^(BOOL finished){
if(segueIdentifier){
[self performSegueWithIdentifier:segueIdentifier sender:self];
}
}];
}];
}
好的,那么自定义 segue 代码非常简单:
-(void)perform
{
UIViewController *src = self.sourceViewController;
UIViewController *dst = self.destinationViewController;
[src.navigationController pushViewController:dst animated:NO];
}
还有我的 secondViewController.m:
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self menuSlideInDirection:@"RightToCenter" performingSegueWithIdentifier:nil];
}
menuSlideInDirection:@"RightToCenter" 在 secondViewController 中执行SegueWithIdentifier:nil 与 firstView 中具有相同名称的方法相同。
我正在寻找目标视图控制器的特定对象在转场之后的平滑动画。
可能是做错了,还有另一种方法可以做到这一点?(我只想将目标 VC 的所有视图和所有控件添加到源 VC 并完全删除“目标 VC”)。
希望,有人可以帮助我。