gpt4 book ai didi

objective-c - CATransition 到其他 View 有效,转换回来时崩溃

转载 作者:行者123 更新时间:2023-12-01 17:00:03 25 4
gpt4 key购买 nike

我正在使用此代码从当前 View 转换到另一个 View 并且它可以工作。问题是当我尝试返回当前 View 时,应用程序崩溃了。

这是我用来从当前 View 传递到新 View 的代码:

CATransition *transition = [CATransition animation];

transition.duration = 0.75;
// using the ease in/out timing function
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

transition.type = kCATransitionReveal;

transition.subtype = kCATransitionFromRight;

transition.delegate = self;

// Next add it to the containerView's layer. This will perform the transition based on how we change its contents.
[self.view.layer addAnimation:transition forKey:nil];

// Here we hide view1, and show view2, which will cause Core Animation to animate view1 away and view2 in.

self.view.hidden = YES;

MyMessages *info1=[[MyMessages alloc] initWithNibName:@"MyMessages" bundle:nil];
[self.view addSubview:info1.view];

info1.view.hidden = NO;
self.view.hidden = NO;

我尝试使用以下代码返回:
CATransition *transition = [CATransition animation];

transition.duration = 0.75;
// using the ease in/out timing function
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

transition.type = kCATransitionReveal;

transition.subtype = kCATransitionFromLeft;

transition.delegate = self;

// Next add it to the containerView's layer. This will perform the transition based on how we change its contents.
[self.view.layer addAnimation:transition forKey:nil];

// Here we hide view1, and show view2, which will cause Core Animation to animate view1 away and view2 in.
self.view.hidden = YES;

FirstViewController *info1=[[ FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
[self.view addSubview:info1.view];

info1.view.hidden = NO;
self.view.hidden = NO;

最佳答案

这是在 UIView 之间进行转换所需的代码。的 UITabBarController和一个新的 UIView .代码转到按钮的 IBAction存在于 UIView 之一中UITabBarController 的.

//initialize the app delegate

AppDelegate appDelegate = (AppDelegate) [[UIApplication sharedApplication] delegate];

// get the view that's currently showing

UIView *currentView = self.view;

// get the the underlying UIWindow, or the view containing the current view view

UIView *theWindow = [currentView superview];
// remove the current view and replace with mynewView1
[currentView removeFromSuperview];

//assign the new view to the viewcontroller1. It is the first uiviewcontroller of the uitabbarcontroller. My uitabbarcontroller consists of five uiviewcontrollers in my project. The button exists in the first viewcontroller1 this is why i am assigning the new view to the viewcontroller1. If the button was pressed from the secondviewcontroller (viewcontroller2) of my uitabbarcontroller i will assign the new view to the secondviewcontroller (viewcontroller2) and so on...
appDelegate.viewController1=[[MyMessages alloc] initWithNibName:@"MyMessages" bundle:nil];

//add it to the window
[theWindow addSubview:appDelegate.viewController1.view];

// set up an animation for the transition between the views
CATransition *animation = [CATransition animation];
[animation setDuration:0.5];
[animation setType:kCATransitionPush];
[animation setSubtype:kCATransitionFromRight];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];

[[theWindow layer] addAnimation:animation forKey:@"SwitchToView1"];

谢谢你的帮助!我已经尝试了一天多来实现它。我希望它能帮助有同样问题的人。

关于objective-c - CATransition 到其他 View 有效,转换回来时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7885947/

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