我正在使用自定义 segue 在两个视图控制器之间导航。自定义 segue 使用 CGAffineTransformMakeScale 在目标控制器上创建缩放效果。
当我以纵向模式运行项目时,一切正常,但是当我更改为横向时,出现了问题。目标控制器以纵向显示在屏幕上,然后动画到正确的比例(1.0、1.0),当动画完成时,它会更改为正确的方向。这对我来说真的很困惑,我在网上找不到任何关于这个问题的东西,所以任何帮助都将不胜感激。
我用来测试的项目使用了两个视图控制器,每个控制器都有一个触发 segue 的按钮。
这是我的 CustomZoomSegue.m 文件:
#import "CustomZoomSegue.h"
@implementation CustomZoomSegue
- (void)perform
{
UIViewController *destinationViewController = (UIViewController *)self.destinationViewController;
UIViewController *sourceViewController = (UIViewController *)self.sourceViewController;
UIWindow *mainWindow = [[UIApplication sharedApplication].windows objectAtIndex:0];
UIView *sourceView = [sourceViewController view];
UIView *destinationView = [destinationViewController view];
destinationView.frame = sourceView.frame;
[mainWindow addSubview:destinationView];
[destinationView setAlpha:0.0f];
[destinationView setTransform:CGAffineTransformMakeScale(0.0, 0.0)];
// slide newView over oldView, then remove oldView
[UIView animateWithDuration:0.8
animations:^{
[destinationView setTransform:CGAffineTransformMakeScale(1.0, 1.0)];
[destinationView setAlpha:1.0f];
}
completion:^(BOOL finished){
[destinationView removeFromSuperview];
[sourceViewController presentViewController:destinationViewController animated:NO completion:nil];
}];
}
@end
有谁知道为什么会这样?它快把我逼疯了