[UIKit]modalPresentationStyle

起こったこと:

  • 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が適合している必要がある
  • present()はhorizontally regular環境ではmodalPresentationStyleを適用し、horizontally compact環境ではフルスクリーンで表示する
    • modalPresentationStyleはデフォルトでは.pageSheet

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

13 − 4 =