🚀

iPadOS 18からタブバーの位置が変わるのでタブベースのアプリは気をつけた方が良い

2024/09/20に公開

今週からiPadOS 18がリリースとなっています。
予想外の挙動があったので、記事を書きます。
これもっと騒がれていいのに、と思ったんですが、僕が見えてないところで騒がれてたりしたんでしょうか……

タブバーが上部に来る

iPadOS 18から、タブバーが上部に来るようにデフォルトが変更になりました。

https://x.com/Dimillian/status/1833477108154138665

新デザインになる条件は、Xcode 16.0以上でビルドされたアプリかつiPadOS 18です。
(コンパイラーがいくつ、とかのもうちょい厳密な条件あるかもですが)
そしてUIKit/SwiftUIどちらでも適用されます。
旧デザインのままにするためには、新しい指定が要ります(後述)。

WWDC2024では

WWDC2024でも、このタブバーの変更は触れられてはいました。
(忘れてましたが……)

What’s new in UIKit
https://developer.apple.com/videos/play/wwdc2024/10118/

これ僕は勝手に「こういう指定ができるようになったよ!」という変更だと解釈してたんですが、
がっつりデフォルト挙動になっていました。
またSwiftUIのTabView でも適用されます。

非適用にするためには

繰り返しますが、デフォルト挙動なので、下部のタブバーのままにしたければ、新たな指定が必要です。

https://stackoverflow.com/questions/78631030/how-to-disable-the-new-uitabbarcontroller-view-style-in-ipados-18

// SwiftUI
TabView {
    // …
}
.environment(\.horizontalSizeClass, .compact)

// UIKit
class TabBarController: UITabBarController {
    override func viewDidLoad() {
        super.viewDidLoad()
        if #available(iOS 17.0, *) {
            traitOverrides.horizontalSizeClass = .compact
        }
    }
}

追記(2024/09/25)

↑この対応入れても、タブバーのheightやボタン間隔が若干変わった気がします。

関連

https://qiita.com/gaussbeam/items/6ec3026a2d0270e42e8e

(了)

Discussion