gpt4 book ai didi

ios - 如何在没有任何导航 Controller 的情况下从 vc1.view 过渡到 iOS 中的 vc2.view?

转载 作者:行者123 更新时间:2023-11-28 20:26:10 25 4
gpt4 key购买 nike

我有覆盖整个屏幕的 vc1.view,我希望能够调暗 vc1.view,并让 vc2.view 放大到整个屏幕。

我的应用程序中没有任何导航 Controller ,那么实现我的目标的最佳做法是什么?我想到的解决方案是:

  • 将 vc1.view 和 vc2.view 添加到一个公共(public)容器 View 中
  • 使用[UIView transitionFromView:vc1.view toView:vc2.view ......]

我不喜欢将不同 vc 的 View 添加到公共(public)容器 View 中的想法。有什么建议么?提前致谢。

最佳答案

您可以使用 transitionFromView:toView:... 而无需将新 View 添加到公共(public)容器,因为该转换方法负责添加 View 。以下对我有用。代码位于 View Controller 中,其 View 是“来自 View ”。我在这里使用交叉淡入淡出,但您可以将其更改为任何其他可用方法:

-(void)switchViews:(id)sender {
UIWindow *win = self.view.window;
YellowController *yellow = [self.storyboard instantiateViewControllerWithIdentifier:@"Yellow"];
yellow.view.frame = self.view.frame;
[UIView transitionFromView:self.view toView:yellow.view duration:2 options:UIViewAnimationOptionTransitionCrossDissolve completion:^(BOOL finished) {
win.rootViewController = yellow;
}];
}

但是,要进行自定义转换,您必须将新 View 添加为“从 View ”所在的任何 View 的 subview (我认为)。在这个例子中,这是窗口的 View 。此代码从旧 View 的中心生成新 View ,而旧 View 则淡出。在转换结束时, View Controller 切换到拥有新 View 的 View Controller (在本例中为黄色)

编辑后:我将此方法更改为使用 CGAffineTransform(感谢 jrturton 在回答我的问题时提出的建议):

-(void)switchViews3:(id)sender {
UIWindow *win = self.view.window;
YellowController *yellow = [self.storyboard instantiateViewControllerWithIdentifier:@"Yellow"];
yellow.view.frame = self.view.frame;
yellow.view.transform = CGAffineTransformMakeScale(.1, .1);
[win addSubview:yellow.view];

[UIView animateWithDuration:.6 animations:^{
yellow.view.transform = CGAffineTransformIdentity;
self.view.alpha = 0;
}
completion:^(BOOL finished) {
[self.view removeFromSuperview];
win.rootViewController = yellow;
}];

关于ios - 如何在没有任何导航 Controller 的情况下从 vc1.view 过渡到 iOS 中的 vc2.view?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13887861/

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