使UIModalTransitionStyle看起来像是在swift中推送

时间:2015-07-08 08:15:57

标签: ios swift

我想知道是否有任何方法可以让UIModalTransitionStyle具有“推送”风格?

因为我有这样的事情:

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let secondViewController = storyBoard.instantiateViewControllerWithIdentifier("SecondViewController") as! SecondViewController
secondViewController.modalTransitionStyle = UIModalTransitionStyle.FlipHorizontal


self.presentViewController(secondViewController, animated:true, completion:nil)

但是当我移动到另一个viewcontroller时,我希望得到简单的“推”效果。

问候!

编辑(感谢LoGoCSE)但仍未解决

现在我有了

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let secondViewController = storyBoard.instantiateViewControllerWithIdentifier("SecondViewController") as! SecondViewController
secondViewController.modalTransitionStyle = UIModalTransitionStyle.FlipHorizontal

let transition: CATransition = CATransition()
transition.duration = 0.25
transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)


transition.type = kCATransitionPush
transition.subtype = kCATransitionFromRight

self.view.layer.addAnimation(transition, forKey: kCATransition)

self.presentViewController(secondViewController, animated:false, completion:nil)

但重点是,添加视图([self.view addSubview:destinationController.view];)不起作用。 所以我试着像往常一样呈现模式视图(没有动画),但过渡是在同一视图上完成的,然后出现第二个视图。

1 个答案:

答案 0 :(得分:1)

- Objective-C中的代码可以正常工作。你需要将它转换为Swift

UIViewController *sourceViewController = self ;
UIViewController *destinationController = objdestinationViewController;

CATransition* transition = [CATransition animation];
transition.duration = .25;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush; //kCATransitionMoveIn; //,kCATransitionPush, kCATransitionReveal, kCATransitionFade
transition.subtype = kCATransitionFromRight; //kCATransitionFromLeft,kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom

[self.view.layer addAnimation:transition forKey:kCATransition];

[self.view addSubview:destinationController.view];

希望它有效:)