使用CATransition自定义viewcontroller过渡动画

时间:2017-07-03 07:51:55

标签: ios objective-c iphone

我有两个viewcontroller A和B.一个支持肖像和风景,B只支持portrait。下面的代码在A上。

UIStoryboard *board = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
B *vcb = [board instantiateViewControllerWithIdentifier:@"B"];

CATransition *a=[CATransition animation];
a.duration = 0.4f;
a.type = kCATransitionMoveIn;
a.subtype = kCATransitionFromTop;
a.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
[self.view.window.layer addAnimation:a forKey:@"kTransitionAnimation"];
[self presentViewController:vcb animated:NO completion:nil];

在B上,我做了解雇。

CATransition *a=[CATransition animation];
a.duration = 0.4f;
a.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
a.type = kCATransitionReveal;
a.subtype = kCATransitionFromBottom;

[self.view.window.layer addAnimation:a forKey:@"dismiss"];
[self dismissViewControllerAnimated:NO completion:nil];

在纵向模式下可以正常工作。但是,当我做下面的步骤时,它的工作是错误的: 1.在纵向模式下呈现B. 2.将手机转为横向,然后单击以关闭B. 动画错了。 任何人都可以解释这个以及如何解决它。我希望B行为与肖像模式相同。

1 个答案:

答案 0 :(得分:0)

不确定,我理解你的问题。您可能应该在控制器A中处理DeviceOrientation。