コンテキスト:通常のUIViewController.view
からUISplitViewController.view
にカスタムアニメーションを実行しようとしています。左から右にアニメーションが表示されます。iOS:不適切なオリエンテーションをrootViewControllerでアニメーションしますか?
UIViewController
の場合、self.window.rootViewController = viewController
はviewController
となります。ユーザースワイプしたら
は、次のように呼び出されます:
UIView *theWindow = [viewController.view superview];
[viewController.view removeFromSuperview];
[theWindow addSubview:self.splitViewController.view];
CATransition *animation = [CATransition animation];
[animation setDuration:0.5];
[animation setType:kCATransitionPush];
[animation setSubtype:kCATransitionFromLeft];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[[theWindow layer] addAnimation:animation forKey:@"SwitchToView1"];
デバイスがポートレートモードである場合には、すべてが完璧に行ってきました。ただし、デバイスがランドスケープモードの場合、デバイスがポートレートモードにあるかのように、トランジションアニメーションが実行されます。例えば、左から来るのではなく、下から来る。両方のビューの方向は完全に正しいです。移行だけが奇妙です。
あなたが他の方向に風景に回転している場合、アニメーションは上から発生しますか。または、あなたが風景モードに入る方法に関係なく、底からですか?この定数は、レイヤーの左側からアニメーションを取り込みます。レイヤーのフレームが更新されていないのではないかと思います。そのため、レイヤーの左側は、回転後のボトムになりました。 – jmstone617
それは正しいです。アニメーションは方向変更を無視します。レイヤーが確実に更新されるようにするための提案はありますか? – Byte
私は同じ問題を抱えています.CALayerの向きは、その視点と一致していないようです。それについての他の同様の記事がいくつかあるようですが、解決策のどれも私にとってはうまくいかないようです。レイヤーを90度回転させるとビューも回転しますので、助けにはなりません。 – jonydep