我试图学习如何执行自定义转场,这样我就可以有一个游戏菜单,当我在网上搜索时,似乎你必须制作一个自定义转场类,并覆盖-(void) perform
,在这种方法中你必须指定一个组成的目的地vc和一个源vc。并确定它的位置和东西。这是我在互联网上看到的代码之一。
@implementation FromTopReplaceSegue
-(void)perform{
UIViewController *dst = [self destinationViewController];
UIViewController *src = [self sourceViewController];
[dst viewWillAppear:NO];
[dst viewDidAppear:NO];
[src.view addSubview:dst.view];
CGRect original = dst.view.frame;
dst.view.frame = CGRectMake(dst.view.frame.origin.x, 0-dst.view.frame.size.height, dst.view.frame.size.width, dst.view.frame.size.height);
[UIView beginAnimations:nil context:nil];
dst.view.frame = CGRectMake(original.origin.x, original.origin.y, original.size.height, original.size.width);
[UIView commitAnimations];
[self performSelector:@selector(animationDone:) withObject:dst afterDelay:0.2f];
}
- (void)animationDone:(id)vc{
UIViewController *dst = (UIViewController*)vc;
UINavigationController *nav = [[self sourceViewController] navigationController];
[nav popViewControllerAnimated:NO];
[nav pushViewController:dst animated:NO];
}
@end
我想这应该是一个从顶部向下出现的segue或其他东西。但我有几个问题,比如什么是源和目标 vc,以及代码所说的部分dst.view.fram=CGRectMake(dst.view.frame.origin.x, 0-dst.view.frame.size.height,
那里的 0 到底是什么鬼,不应该是这样dst.view.frame.origin.y
吗?
好吧,不管怎样,我把它连接起来并从一个按钮创建了一个 push segue,但是当我这样做时,segue 只从屏幕顶部向下移动了大约 3/4,而底部的 1/4 显示了我的底部根视图。而且当我在segue之后尝试按下我的新vc上的按钮时,程序崩溃了。
任何信息都会有所帮助!