LoginSignup
229
169

More than 3 years have passed since last update.

爆速でiOS13に対応するためにやったこと

Last updated at Posted at 2019-09-15

個人開発アプリでiOS13対応をしたので、やったことや躓いたことをメモしておきます。
小規模アプリなのもあり、対応自体は1時間もかからず終わりました(macOS、Xcodeのアプデ含めても2時間くらい)。
これから対応される方のお役に立てば幸いです。
Anilog - アニメ記録はアニログ

事前準備

  • Xcodeを最新にしておく(Xcode 11 GM Seed)
  • macOSを最新にしておく(macOS Catalina 10.15 beta 8)

※2019/09/15時点の最新
※ダウンロードはこちらから:https://developer.apple.com/download/
※後述の通り、最新にしていなかったことが原因でハマったこともあったので、先に最新版を入れておくことをおすすめします。
※ macOSについては、Catalinaのbetaを既に入れている場合のみ。

追記(2019/09/17 08:00)

Xcode 11 GM seed 2が来ましたので、これから対応される方はそちらを利用してください。
Xcode 11 GM seedで、今回バグが発見されたnamed colorsを使っているアプリを提出済みの方については、Xcode 11 GM seed 2でビルドしたものを再提出する必要があるとのこと。
スクリーンショット 2019-09-17 7.54.40.png

やったこと、躓いたこと

クラッシュ修正

ビルドしようとしたら下記エラーでクラッシュしました。

Terminating app due to uncaught exception 'NSGenericException', reason: 'Access to UISearchBar's _searchField ivar is prohibited. This is an application bug'

下記のようにvalue(forKey:)を使っている箇所があったのですが、このアクセス方法が禁止になったようです。

let textField = searchBar.value(forKey: "_searchField") as! UITextField
textField.backgroundColor = .gray

下記記事を参考にsearchTextFieldプロパティを使うように変更したところ、ビルドが通るようになりました。
UISearchBarのプライベートなプロパティにアクセスするコードがiOS 13では禁止になったようです - Qiita

ダークモード対応

iOS13の目玉の一つでもあるダークモードですが、今すぐに対応するのは正直厳しいので、一旦ライトモード固定で逃げることにしました。
info.plistUser Interface StyleキーにLightを設定すれば完了
スクリーンショット 2019-09-15 23.26.32.png

ダークモード設定中でも本当にライトモードになっているのか、念のためシミュレーターで確認したい場合は、下記記事を参考に「設定アプリ」からDark AppearanceをONにしてください。
XCode11のシミュレーターでiOS13のダークモードを設定する方法 - Qiita

ちなみに、info.plistで誤ってlight(正しくはLight)を設定したままストアにアップロードしようとしてしまったのですが、下記エラーが出てできませんでした。皆さんはお間違いなく!
スクリーンショット 2019-09-15 22.52.44.png

モーダル表示の変更

UIViewControllermodalPresentationStyleのデフォルト値がFullScreenからAutomaticに変更されたことで、アプリ内のモーダル表示のスタイルが一部変わってしまっていました。

iOS12まで iOS13

今回はiOS12までのスタイルに戻す形で修正をしたかったため、
Storyboardから該当のSegueを選択し、AttributesInspectorでPresentationFull Screenに変更しました
スクリーンショット 2019-09-15 16.24.23.png
参考:iOS 13時代のModal表示仕様と対応 - Qiita

タブバーの色がおかしい

本来は選択中のタブのみアイコンの色が付くはずなのですが、なぜか両方色がついていました。
スクリーンショット 2019-09-15 15.58.39.png

もともと入れていたXcode11 betaのバグらしく、Xcode 11 GM Seedを入れたら直りました
uitabbarcontroller - UITabBarItem icon not colored correctly for iOS 13 when a bar tint color is specified in Interface Builder in Xcode 11, beta 2 - Stack Overflow

Xcode 11 GM Seedでビルドできない

Distill failed for unknown reasons.
スクリーンショット 2019-09-15 17.13.10.png

というエラーが出てビルドが通らず。

下記記事にコメントがあるように、macOSを最新にしたらビルドが通りました。
Distill failed for unknown reasons (Xcode 11 be… |Apple Developer Forums
スクリーンショット 2019-09-15 17.21.48.png

追記(2019/09/18 01:00)

本記事の内容で審査をクリアし、無事リリースしました!

229
169
4

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
229
169