我没有使用导航控制器,而是使用storyboards。
我需要从一个视图控制器过渡到另一个视图控制器,为此我使用segue。
现在我将segue样式设置为自定义,在相应的类中,我重写了perform
方法。
-(void)perform
{
UIViewController *sourceViewController = [self sourceViewController];
UIViewController *destinationViewController = [self destinationViewController];
CATransition *transition = [CATransition animation];
transition.duration = 0.25;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromLeft;
[sourceViewController.view.layer addAnimation:transition forKey:kCATransition];animated:NO];
[sourceViewController presentViewController:destinationViewController animated:YES completion:nil];
}
但是目标视图控制器也有一个属性modalTransitionStyle
。
现在,源视图控制器从左到右移动,就像被推动一样,但我想显示它是由目标视图控制器推动的。相反,目标VC默认情况下执行“覆盖垂直”,并且modalTransitionStyle
属性只有四个可用选项,其中没有一个适用于我。
我认为要使其工作,应该将此动画添加到某个父视图层,这是两个视图控制器都呈现的父视图。但是没有这样的父视图..
viewWillAppear
和其他类似的方法吗?我能够“dismiss”视图吗,还是我要做类似于删除视图的操作? - neerajviewDidLoad
或viewWillAppear
将像往常一样被调用。如果你所说的“关闭”是指像dismissModalViewControllerAnimated:
生成的行为,那么你可以通过调用一个功能来实现相同的效果,但顺序相反(将新视图附加到左侧并向左滑动)。 - Danielorigin.y
和size.height
的值,并将origin.x
和size.width
的值设置为视图的值。 - Daniel