【Xcode/Swift】Xcode13対応、iOS15対応。対応したこと・変更点・気づいたことまとめ

Xcode13、iOS15で対応したこと・変わったこと・気づいたことをここにまとめていく。

公式の改訂履歴

Xcode 13に、チームで開発するためのパワフルな新機能が加わりました。これらの新機能は、Xcode Cloudや、GitHub、Bitbucket、GitLabでの共同作業機能に最適です。Xcode内でプルリクエストの作成、レビュー、コメント、マージを直接行うことができるほか、コード上でチームメンバーのコメントを直接確認することもできます。また、2つのバージョンのコードファイルをすばやく比較することも可能です。

引用元:Apple Developer-(Xcode 13の概要)

Xcode

  • 新しいナビゲータアイコンと常時表示される下部のバーが追加され、XcodeのUIがさらに洗練されました。
  • Reportナビゲータの新しい「Cloud(クラウド)」タブには、Xcode Cloudのワークフローとビルド結果が表示されます。

Xcode Cloud

  • Xcodeに直接組み込まれているクラウドベースのツールを使用して、Appをビルド、テスト、配信することができます。
  • クラウドで複数のテストを同時に実行し、テスト結果をReportナビゲータに表示することができます。
  • App Store Connectでワークフローの表示や編集、ビルド結果の確認などを行うことができます。
  • TestFlightを使用して、ビルドをテスターに自動的に配信することができます。

ソースコード管理の統合

  • プルリクエスト機能が一新され、ソースコードの変更のレビュープロセスがXcodeと密接に統合されました。
  • コードのレビューモードには、インラインの差分モードが新たに追加され、現在作業中のソースコードを参照しながら差分を確認できるようになりました。

テスト

  • テストが失敗または合格するまで実行することができます。また、指定した回数実行することもできるので、失敗率に関するデータを収集できます。
  • XCTestは、メモリトラッキングや、iPadOSのカーソル操作のテストに対応するようになりました。

エディタ

  • Swiftのコード補完がより高速かつ確実なものになりました。
  • Swiftのシンタックスのハイライト機能がより速く、信頼性の高いものになりました。

デバッグ

  • 列のブレークポイントにより、サブラインでブレークポイントを解決できます。
  • 選択的なシェーダデバッガでは、大規模なシェーダ内でデバッグする関数を選択できるので、大規模なシェーダのイテレーションやデバッグに要する時間を短縮できます。

その他の改善点

  • TestFlightのAppからのクラッシュレポートが、Xcode Organizerに数分で表示されるようになり、ユーザーのフィードバックも含めることができるようになりました。
  • Xcodeエディタは、Vimユーザーが頻繁に使用するショートカットキーや編集モードの多くに対応するようになりました。
  • InstrumentsにMetalによって高速化されたGPUタイムラインビューが新しく実装され、大きなトレースでもスムーズな操作性を実現しました。
  • InstrumentsのCPU Profilerのテンプレートでは、サイクルベースのプロファイリングが可能です。
  • 新しいHTTPネットワークトレースツールは、デベロッパやプライバシー調査員が、HTTPベースのネットワークトラフィックをデバッグおよび分析したりするのをサポートします。

引用元:Apple Developer-(新機能 – Xcode)

対応したこと

タブバーの透過対応

iOS14以前では、タブバーの背景がグレーになっていたが、iOS15から透過するようになった。(他のコンテンツがタブバーにかぶるとグレーになる。)

対応としては、以下のように背景にグレー(#f8f8f8)を指定する。

iOS15からscrollEdgeAppearanceが追加されたため、standardAppearanceと同じように設定を入れる

let appearance = UITabBarAppearance()
appearance.configureWithOpaqueBackground()
appearance.backgroundColor = UIColor(red: 248/255, green: 248/255, blue: 248/255, alpha: 1.0)
UITabBar.appearance().standardAppearance = appearance
if #available(iOS 15.0, *) {
    UITabBar.appearance().scrollEdgeAppearance = appearance
}

ナビゲーションバーのbarTintColorが透明になる

タブバーと同じ理由で、ナビゲーションバーも透過するようになった。以下の対応を行う。

コードで変更する方法

以下のようにナビゲーションバーのbarTintColorを指定する

scrollEdgeAppearancestandardAppearanceに同じ設定を入れてあげる

let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground()
appearance.backgroundColor = .red
navigationController?.navigationBar.standardAppearance = appearance
navigationController?.navigationBar.scrollEdgeAppearance = appearance

Storyboardで変更する方法

①大元のナビゲーションバーをクリック
(Show the Attributes inspector)を選択
③AppearancesのStandardScroll Edgeにチェック
④Scroll Edge AppearanceのBackgroundを任意の色に変更

ライブラリのアップデート(毎回)

【Xcode/Swift】Module compiled with Swift 5.4.2 cannot be imported by the Swift 5.5 compiler: パス

変わったこと・気づいたこと

Device Orientationが効かなくなってる?

画面の回転を固定したい時に、上記のように、チェックを入れると思うのだが、これがなぜか効かなくなってる。。。

【Xcode/Swift】画面の回転を固定する方法を2パターン紹介〜Xcode13からDevice Orientationが効かなくなった?〜

Buttonが増えてる。

iOS15のLocation Buttonとかも追加されてる。。

アイコンが変わってる。

あと、プロジェクト名.appだけが入ってるフォルダ、Productsフォルダがない。

Info.plist内の項目が少ない。

Xcode13関連の記事

参考 Xcode13から追加されたXCTestの連続実行を試す。Qiita 参考 Xcode13、iOS15に対応するshtnkgm 参考 iOS 15 に対応する (Xcode 13.0)Zenn 参考 マネーフォワード MEのiOS 15対応Money Forward Engineers' Blog

Xcode13関連のツイート

https://twitter.com/_rockname/status/1421418681880383488

これからXcode13、iOS15対応をしていくと思うのでここに色々とやったこととかを記載していきたいと思います。