0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

iPadOS18でUISplitViewControllerが1pane表示になる

Posted at

純正の設定画面みたいな感じで、2-paneなUISplitViewControllerをモーダル表示してるところが
iPadOS18だと、1-paneのNavigationViewControllerみたいになっていて。

なんでかなーと調べたのメモ。

結論

1-paneになる原因:
UserInterfaceSizeClassCompactになっているから。

UISplitViewController.isCollapsed がソレらしい。

みんなもデバッガで確認してみよう。

When collapsed, the displayMode property has no impact on the appearance of the split view interface

こいつがtrueな状況だと、displayModeは無視される
-> Compactの表示になって、1-painにされてしまう

対策

  1. 幅を増やす
  2. Compactなんて認めない

幅を増やす

表示幅が足りない(と勝手に決めつけられてる)のが原因なので、幅を増やせば解決。

self.preferredContentSize = CGSize(width: 640, height: 640)

表示してるモーダルの大きさをpreferredContentSizeで広げてやれば解決。
なお、指定したところでOS側に勝手に調整される。

Compactなんて認めない

if #available(iOS 17.0, *) {
    splitVC.traitOverrides.horizontalSizeClass = .regular
}

文句言わずにRegularで表示しろよ、とtraintOverridesする。

雑感

iPadOS 18、だいぶひどい。
sizeClass、だいぶ前からある割に成功する未来が全然見えないが、どうしてこのタイミングで強行したんだろう・・・?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?