1. ホーム
  2. ios

[解決済み] iOSでSwiftを使ってビューコントローラを右から左へ表示する方法

2023-02-07 11:38:10

質問

presentViewControllerを使って新しい画面を表示しています。

let dashboardWorkout = DashboardWorkoutViewController()
presentViewController(dashboardWorkout, animated: true, completion: nil)

これは新しい画面を下から上へ表示するものですが、右から左へ表示させるために UINavigationController .

ストーリーボードの代わりにXibを使っているのですが、どうすればいいのでしょうか?

どのように解決するのですか?

それは、もしそれが xib であっても storyboard を使用します。通常、右から左への遷移は、ビューコントローラをpresentorの UINavigiationController .

アップデイト

タイミング機能追加 kCAMediaTimingFunctionEaseInEaseOut

サンプルプロジェクト Swift 4 の実装をGitHubに追加しました。



Swift 3 & 4.2

let transition = CATransition()
transition.duration = 0.5
transition.type = CATransitionType.push
transition.subtype = CATransitionSubtype.fromRight
transition.timingFunction = CAMediaTimingFunction(name:CAMediaTimingFunctionName.easeInEaseOut)
view.window!.layer.add(transition, forKey: kCATransition)
present(dashboardWorkout, animated: false, completion: nil)



ObjC

CATransition *transition = [[CATransition alloc] init];
transition.duration = 0.5;
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromRight;
[transition setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[self.view.window.layer addAnimation:transition forKey:kCATransition];
[self presentViewController:dashboardWorkout animated:false completion:nil];



Swift 2.x

let transition = CATransition()
transition.duration = 0.5
transition.type = kCATransitionPush
transition.subtype = kCATransitionFromRight
transition.timingFunction = CAMediaTimingFunction(name:kCAMediaTimingFunctionEaseInEaseOut)
view.window!.layer.addAnimation(transition, forKey: kCATransition)
presentViewController(dashboardWorkout, animated: false, completion: nil)

のようです。 animated のパラメータは presentViewController メソッドのパラメータは、このカスタムトランジションの場合、特に重要ではありません。これはどのような値でもよく true または false .