起こったこと:
- ViewController間で画面遷移をした際、iPhoneとiPadで遷移後のviewのサイズが異なっていて、iPadでの動作が期待と異なっていた。
- 期待の動作:
フルスクリーン>フルスクリーン
実際の動作:
フルスクリーン>画面内中央に小さいviewが表示 - Storyboardは使わずコードでViewControllerを生成した
- present()で遷移する実装
- 期待の動作:
解決方法:
遷移先のViewControllerに以下を指定すると解決した。
modalPresentationStyle = .fullScreen
調べたこと:
参照:
View Controller Programming Guide for iOS: Presenting a View Controller
- ViewControllerを表示する方法は2種類ある
- container view controllerに埋め込む(後述のshow?)
- presentする
- presentの初期化方法は2つある
- Segueで設定する
- コード上で設定する
- presentは主にモーダルを表示するために使われるが、それ以外の使用方法もある
- presentはpresenting-viewcontrollerとpresented-viewcontrollerの関係を生成する
- Presentation Styleを指定することでview controllerの見た目を設定出来る
- showとpresentの違い
- show:presenting-viewcontrollerがpresented-viewcontrollerを制御する
- 他のview階層のことを考えなくていいので、望ましい?
- 指定されたPresentation Styleと異なる表示になる場合がある(おそらくpresenting-viewcontrollerの判断と異なる場合)
- present:常にモーダル表示
- Presentation Styleを指定する場合、presenting-viewcontrollerが適合している必要がある
- show:presenting-viewcontrollerがpresented-viewcontrollerを制御する
- present()はhorizontally regular環境ではmodalPresentationStyleを適用し、horizontally compact環境ではフルスクリーンで表示する
- modalPresentationStyleはデフォルトでは.pageSheet