我正在尝试使用自定义转换。我想要从视图控制器 1 到 2 的“覆盖垂直”过渡,然后在移动到视图控制器 3 时让视图控制器 2(中间的)再次向下滑动。故事板如下所示:
http://i.stack.imgur.com/bJYXI.png
我正在使用从这篇文章链接到的教程。并且还用答案中提供的代码替换了 .m 代码:
Xcode 自定义转场 - Cover Vertical 的对面(从上到下) - 完整新手
我创建了 UIViewController 的子类并将其命名为 FromTopReplaceSegue。我的 .h 和 .m 代码如下所示:
。H
#import <UIKit/UIKit.h>
@interface FromTopReplaceSegue : UIViewController
@property(nonatomic, readonly) id sourceViewController;
@property(nonatomic, readonly) id destinationViewController;
@end
.m
#import "FromTopReplaceSegue.h"
@interface FromTopReplaceSegue ()
@end
@implementation FromTopReplaceSegue
-(void)perform{
UIViewController *sourceViewController = (UIViewController *) self.sourceViewController;
UIViewController *destinationViewController = (UIViewController *) self.destinationViewController;
[sourceViewController.view addSubview:destinationViewController.view];
[destinationViewController.view setFrame:sourceViewController.view.window.frame];
[destinationViewController.view setTransform:CGAffineTransformMakeTranslation(0, -sourceViewController.view.frame.size.height)];
[destinationViewController.view setAlpha:1.0];
[UIView animateWithDuration:0.75
delay:0.0
options:UIViewAnimationOptionTransitionFlipFromTop
animations:^{
[destinationViewController.view setTransform:CGAffineTransformMakeTranslation(0, 0)];
[destinationViewController.view setAlpha:1.0];
}
completion:^(BOOL finished){
[destinationViewController.view removeFromSuperview];
[sourceViewController presentViewController:destinationViewController animated:NO completion:nil];
}];}
@end
当我尝试运行模拟器时,我可以轻松地从控制器视图 1 到 2,但是当我尝试使用自定义 segue 从控制器视图 2 移动到 3 时它会崩溃。
任何人都可以帮忙。
非常感谢您!在这里挣扎!:)