gpt4 book ai didi

iphone - 目标 vc 和源 vc 有什么区别?

转载 作者:行者123 更新时间:2023-11-29 04:30:46 26 4
gpt4 key购买 nike

我正在尝试学习如何执行自定义转场,以便我可以拥有一个游戏菜单,当我在网上搜索时,似乎您必须创建一个自定义转场类,并覆盖 -(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 和目标 VC,以及代码显示 dst.view.fram=CGRectMake(dst.view.frame.origin.x, 0-dst.view.frame.size.height, 的部分

那 0 到底是什么,不应该是 dst.view.frame.origin.y

好吧,无论如何,我将其连接起来并通过按钮创建了一个推送转场,但是当我这样做时,转场仅从屏幕顶部向下大约 3/4,而底部 1/4 显示了我的 Root View 的底部。而且当我尝试在 segue 之后按下新 vc 上的按钮时,程序崩溃了。

任何信息都会有帮助!

最佳答案

这是看起来没有完全解释的事情之一。从您的代码来看,“源 View Controller ”似乎是 Root View Controller (或父 View Controller ),“目标 View Controller ”是 DetailViewController(或 subview Controller )。

不确定这是否会让您更加困惑。无论如何,父/ Root View Controller 是主视图 Controller ,它处理 subview Controller 的显示。我发现有趣的是,创建者对另一个类的 View 进行了子类化,而不是呈现它。

现在 y 轴上的值是 0 - self.view.frame.size.height = -320。将您的主视图视为一张纸,并将 subview 视为第二张纸。想象一下将两张纸一张一张地放在另一张纸的上面(而不是放在上面)。屏幕只会显示底部的一张纸,直到您将“上面的纸”动画化为止。基本上,他计划从顶部而不是底部开始动画(我想我回答了我自己的好奇心。)

关于iphone - 目标 vc 和源 vc 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11768015/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com