【发布时间】:2019-02-13 05:09:32
【问题描述】:
我将 UIStoryboardSegue 子类化以创建从左到右的 Segue。 segue 工作,但是,有一个黑色的垂直条或背景在两个视图控制器之间暂时可见,这会破坏效果。 (我希望 segue 看起来像一个正常的从右到左的显示 segue,但方向相反)。有谁知道这可能是什么原因或如何摆脱它?这是我的代码:
#import "customSegue.h"
#import "QuartzCore/QuartzCore.h"
@implementation customSegue
-(void)perform {
UIViewController *sourceViewController = (UIViewController*)[self sourceViewController];
UIViewController *destinationController = (UIViewController*)[self destinationViewController];
CATransition* transition = [CATransition animation];
transition.duration = .25;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush; //kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade
transition.subtype = kCATransitionFromLeft; //kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom
[sourceViewController.navigationController.view.layer addAnimation:transition
forKey:kCATransition];
[sourceViewController.navigationController pushViewController:destinationController animated:NO];
}
@end
编辑:
我想我会收集一些我发现的建议修复,尽管没有一个对我有用。
将呈现视图控制器的背景颜色设置为白色
Set self.definesPresentationContext = YES; 在呈现视图控制器上或从接受的答案 here 中检查情节提要中 VC 的“定义上下文”。
指定上下文如下:
UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController;
rootViewController.modalPresentationStyle = UIModalPresentationCurrentContext;
UIViewController *destinationController = (UIViewController*)[self destinationViewController]
[sourceViewController presentViewController:destinationController animated:NO completion:nil];
来自接受的答案here。
【问题讨论】:
标签: ios objective-c storyboard uistoryboardsegue