カスタム セグエを使用して、2 つのビュー コントローラー間を移動しています。カスタム セグエは、CGAffineTransformMakeScale を使用して、宛先コントローラーでズーム効果を作成します。
プロジェクトをポートレート モードで実行するとすべて問題なく動作しますが、ランドスケープ モードに変更すると問題が発生します。宛先コントローラーは縦向きで画面に表示され、正しいスケール (1.0、1.0) にアニメーション化され、アニメーションが完了すると正しい向きに変わります。これは私にとって本当に混乱を招くものであり、この問題についてオンラインで何も見つけることができないため、どんな助けも大歓迎です.
これをテストするために使用するプロジェクトでは、2 つのビュー コントローラーを使用し、それぞれにセグエをトリガーするボタンがあります。
これは私の 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
なぜこれが起こるのか誰にも分かりますか?それは私を夢中にさせています